Flamingo is a lightweight contextualization tool that aims to handle initialization of cloud instances.
It is meant to be a replacement for cloud-init in Atomic Host, a lightweight operating system designed to run applications in Docker containers with orchestration capabilities (Kubernetes). It has 3 different flavors; Fedora, RHEL, and CentOS.
For more details please check Introducing Flamingo
The aim of this project is to create a fast, extensible, documented tool to use
Why not use cloud-init?
- In order for an image to be built with cloud-init as its contextualization tool, it needs to contain the python interpreter, it's dependencies and the dependencies of cloud-init. It fattens up the image and increases complexity for the distributions.
- Due to the dynamic nature of scripting languages they are slow. In an I/O boud application this is not a big problem however initializing VM images, is different.
- The documentation is lacking at best. The tests are inadequate and it is a big chunk of initialization scripts. Making it hard to work with cloud-init as a developer and maintainer.
Golang excels at building big applications (e.g. distributed computing). It provides the necessary tooling for the job. It doesn't have long dependency chains like interpreted languages and it is fast.
Flamingo will essentially be a single binary coupled with all of its dependencies. In addition, cloud images will be smaller as well.
Testability, Documentation and Extensibility is heavily emphasized in Flamingo.
You can find the latest source
RPM releases here
For fedora, you can also use the
dnf copr enable tamertas/flamingo dnf install flamingo
Flamingo supports configuration through
cloud-config files similar to
It supports a subset of
If you'd like to contribute, learn more, or share your opinions please feel free to open an issue, mail to centos-devel, atomic, user-list or come to #atomic and #centos-devel irc channels to have a chat.