# Packages
# README
Flamingo
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
Goals
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.
Solution
-
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.
Discussions
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.