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, documented, extensible 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.
Flamingo is in Alpha stage at the moment. Build images containing Flamingo as the default contextualization tool (swapped with cloud-init) will be available soon. In the meanwhile API is volatile, so expect changes!
- Docker Test Environment
- User & Password Management
- Running Custom Scripts
- SSH Configuration
- Manage Services at Boot
- Manage and Modify IPtables/Filter Rules
- RESTful Client
- Meta-Data
- Cloud-Config
- Config-Drive
- Integration with systemd (using config-drive.mount instead of manual checks)
- Test Images
In the meanwhile if you'd like to share your opinions, learn more, or contribute please feel free to open an issue, mail to centos-devel, atomic, user-list or come to #atomic and #centos-devel channels to have a chat.