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
- 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 copr
repository
dnf copr enable tamertas/flamingo
dnf install flamingo
Flamingo
supports configuration through cloud-config
files similar to
cloud-init
.
It supports a subset of cloud-init
cloud-config
.
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.