Universal Linux distributions, such as SLES or openSUSE, have vastly different usages and are running on very different types of hardware. Different usages and hardwares have different installation methods, deployments, configurations. With Iguana we are trying to create ambitious universal initial ramdisk which actual functionality is provided in containers.
Iguana itself strives to contain as little logic as possible just to prepare environment to run containers and provide simple orchestration of them.
Iguana is split in multiple packages:
- Dracut module dracut-iguana
- Iguana orchestrator iguana-workflow
- This overall project
Devel packages are available at OBS project:
VM machine is recommended for testing because Iguana is in early stages of development and unstable.
iguana
package can be installed on regular system as it does no changes to the system itself except to provide kernel and initrd file.
After installing iguana
package, there will be two files:
- /usr/share/iguana/iguana-initrd
- /usr/share/iguana/vmlinuz--default
These can be used for direct kernel boot of VM or for PXE booting. This will start iguana initrd on boot of the VM.
Iguana understands three kernel command line options which are used for influencing Iguana run:
- rd.iguana.containers <container_image>, ... Use to manually set what container(s) to run. This will make Iguana to pull and start containers.
- rd.iguana.control_url
Use to point Iguana to iguana workflow file. For example running containerized Agama use
rd.iguana.control_url=https://raw.githubusercontent.com/openSUSE/iguana/main/examples/agama.yaml
- rd.iguana.debug Use to enable debug mode.
For details see dracut-iguana documentation
For Iguana to work correctly and enable correct boot after containers run is finished there are couple assumptions and expectations.
Every container started by iguana is running in privileged mode with host networking. They will have /iguana
volume bind mounted to provide sharing configuration and results between containers and host.
- Machine ID is provided in
/iguana/machine-id
file. - Iguana expects
/iguana/mountlist
file after last container is finished. Each line contains device, mountpoint and optional mount options. Iguana will mount all mounts in order as they are specified in the mountlist file.
device mountpoint mount_options
device2 mountpoint2
...
- Iguana reads
/iguana/kernelAction
file if exists and if it has valuekexec
then iguana will callkexec -e
before finishing.