Automating deployment and configuration of virtualized SUSE Manager installations for testing, debugging and development.
Security is explicitly not a goal, convenience is.
sumaform is:
- Terraform modules of two types:
- "backend" modules, provider-specific. Those define basic infrastructure components such as hosts and disks
- "backend-independent" modules (logical components like
suse_manager
orminion
), that do not vary depending on the chosen backend
cloud-init
configuration files (for OSs which have an official disk image on supported providers)- base disk images: bare-bones OSs to bootstrap VMs (for OSs which do not have an official disk image, or for historical reasons)
- Salt states: they define all software configuration on top of bare-bones OSs: SUSE Manager servers, clients, proxies, etc.
Intent is to keep those three components well separated in their purpose.
Historically, an important part of sumaform was descriptors of base disk images for the supported OSs.
As of March 2020, support was added to use so-called "official" images from distributions/vendors which publish them. For those, cloud-init
configuration files are integrated into Terraform modules in order to implement minimal configuration to bootstrap Salt states, which take care of the bulk of the complexity in configuration.
It is expected all newly supported OSs to make use of "official" images, thus base disk images are at this point considered deprecated.
Basic Virtual Machine images must:
- have a
root
user inroot
group and passwordlinux
- expect a network interface and assume its address is provided via DHCP
- contain an SSH server listening on port 22, allow plain password authentication
- contain
salt-minion
or an equivalent package - contain any other package needed for the target virtualization infrastructure (eg.
qemu-ga
or equivalent package for libvirt) - be immutable (not need to be upgraded). Ideally, they should be based on the initial release repo of the target OS (ie. without any updates). Upgrades will be taken care of by Salt states when needed, at the needed version
- be as minimal as possible, ideally JeOS