128 lines
4.1 KiB
Markdown
128 lines
4.1 KiB
Markdown
---
|
|
title: Development VM
|
|
---
|
|
|
|
To ensure compatibility across distribution, this project ships a wide range of development and tests VM images.
|
|
|
|
The test VMs can be built locally using [cloud-init](https://cloud-init.io/), [packer](https://www.packer.io/) on Qemu/KVM using Libvirt. No other hypervisor will be targeted for these tests. The files that generate these images can be found in the **[tests/packer](https://github.com/roddhjav/apparmor.d/tree/main/tests/packer)** directory.
|
|
The VMs are fully managed using a [justfile](https://github.com/casey/just) that provides an integration environment helper for `apparmor.d`.
|
|
|
|
```sh
|
|
$ just
|
|
```
|
|
|
|
```
|
|
Available recipes:
|
|
help # Show this help message
|
|
build # Build the go programs
|
|
enforce # Prebuild the profiles in enforced mode
|
|
complain # Prebuild the profiles in complain mode
|
|
fsp # Prebuild the profiles in FSP mode
|
|
install # Install the profiles
|
|
pkg # Build & install apparmor.d on Arch based systems
|
|
dpkg # Build & install apparmor.d on Debian based systems
|
|
rpm # Build & install apparmor.d on OpenSUSE based systems
|
|
tests # Run the unit tests
|
|
lint # Run the linters
|
|
check # Run style checks on the profiles
|
|
man # Generate the man pages
|
|
docs # Build the documentation
|
|
serve # Serve the documentation
|
|
clean # Remove all build artifacts
|
|
package dist # Build the package in a clean OCI container
|
|
img dist flavor # Build the VM image
|
|
create dist flavor # Create the machine
|
|
up dist flavor # Start a machine
|
|
halt dist flavor # Stops the machine
|
|
reboot dist flavor # Reboot the machine
|
|
destroy dist flavor # Destroy the machine
|
|
ssh dist flavor # Connect to the machine
|
|
list # List the machines
|
|
images # List the VM images
|
|
available # List the VM images that can be created
|
|
init dist flavor # Install dependencies for the bats integration tests
|
|
integration dist flavor # Run the integration tests on the machine
|
|
get_ip dist flavor
|
|
get_osinfo dist
|
|
|
|
See https://apparmor.pujol.io/development/ for more information.
|
|
|
|
```
|
|
|
|
## Requirements
|
|
|
|
* [docker](https://www.docker.com/)
|
|
* [just](https://github.com/casey/just)
|
|
* [packer](https://www.packer.io/)
|
|
* [libvirt](https://libvirt.org/)
|
|
* [qemu](https://www.qemu.org/)
|
|
|
|
!!! note
|
|
|
|
You may need to edit some settings to fit your setup:
|
|
|
|
- The default ssh key and ISO directory in `tests/packer/variables.pkr.hcl`
|
|
|
|
## Build
|
|
|
|
One can see the available images by running:
|
|
|
|
```sh
|
|
$ just available
|
|
```
|
|
|
|
```
|
|
Distribution Flavor
|
|
archlinux gnome
|
|
archlinux kde
|
|
archlinux server
|
|
archlinux xfce
|
|
debian12 gnome
|
|
debian12 kde
|
|
debian12 server
|
|
ubuntu24 server
|
|
...
|
|
```
|
|
|
|
A VM image can be build with:
|
|
|
|
```sh
|
|
$ just img archlinux gnome
|
|
```
|
|
|
|
The image will then be showed in the list of images:
|
|
|
|
```sh
|
|
$ just images
|
|
```
|
|
|
|
```
|
|
Distribution Flavor Size Date
|
|
archlinux gnome 3.3G Mar 1 14:49
|
|
```
|
|
|
|
The VM can then be created with:
|
|
|
|
```sh
|
|
$ just create archlinux gnome
|
|
```
|
|
|
|
And connected to with:
|
|
|
|
```sh
|
|
$ just ssh archlinux gnome
|
|
```
|
|
|
|
## Develop
|
|
|
|
**Credentials**
|
|
|
|
The admin user is: `user`, its password is: `user`. It has passwordless sudo access. Automatic login is **not** enabled on DE. The root user is not locked.
|
|
|
|
**Directories**
|
|
|
|
All the images come pre-configured with the latest version of `apparmor.d` installed and running in the VM. The apparmor.d project directory is mounted as `/home/user/Projects/apparmor.d`
|
|
|
|
**Usage**
|
|
|
|
On all images, `aa-update` can be used to rebuild and install the latest version of the profiles. `p`, `pf`, and `pu` are two pre-configured aliases of `ps` that show the security status of processes. `htop` is also configured to show this status.
|