Introducing Flamingo: A Lightweight Cloud Instance Contextualization Tool for CentOS Atomic Host

Friday , 24, July 2015 3 Comments

When using on-demand instantiation of virtual machines in cloud computing,
users pass configuration data to the cloud and that data is used for
configuring the instances.
This process is called contextualization. Contextualization includes
identity(users, groups), network, system services and disk configuration.

Flamingo is a contextualization tool that is being developed under GSoC 2015

that aims to handle early initialization of cloud instances.

The current de facto standard for instance virtualization is cloud-init.
However, there are some problems with it. The most prominent ones are:

  • The usage of a scripting language (Python in this case), since scripting
    languages have the overhead of the interpreter, its dependencies and
    being slower than compiled ones due to their dynamic nature.
  • The documentation is lacking at best. There are examples of common
    use-cases. However, most of the code-base and plug-ins are undocumented.
    Inspecting the code-base is a prerequisite to extend the functionality or
    even understand it.
  • Test coverage is low. Making it hard to extend, maintain, and improve.

Don`t get me wrong it gets the job done. But, it has a lot of issuses and
these issues make it hard to use, extend and maintain.


Flamingo aims to solve the following problems encountered in cloud contextualization;

  • Speed
  • Dependency
  • Maintainability
  • Extensibility

Go is a very suitable choice for a tool like this. Since, it is fast,
it has cheap concurrency, and dependency management is a breeze (see godep).
It allows the distribution of a single executable binary with its dependencies.


Target Distribution

The first target for Flamingo is the CentOS Atomic Host and CentOS Linux generic cloud images. We would, ofcourse, like to see wider adoption and are interfacing with other projects and image builders to see how best we might collaborate on this moving forward.


Getting Involved
You can find the source code for the tool here.

For more details please check this blog post


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,user-list or come to #centos-devel IRC channel to have a chat.


  • E-mail: contact _
  • IRC: tmrts


Tamer Tas


3 thoughts on “ : Introducing Flamingo: A Lightweight Cloud Instance Contextualization Tool for CentOS Atomic Host”
  • Rosemary says:

    What's up everyone, it's my first go to see at this web
    site, and post is in fact fruitful for me, keep up posting these posts.

  • Hi,

    This is great, as cloud-init is quite hard to fully understand and is indeed dependency-heavy.

    However, how is flamingo different from CoreOS' Go implementation of cloud-init? Is the configuration format different (it's hard to tell from the blog post)?


  • Tamer Tas says:

    Hi Eric,

    Thanks for your input I'll improve the documentation to include answers to those questions.

    As for your question, CoreOS implementation, while stemming from the same problem (cloud-init), includes CoreOS specific features and implementation.

    Current focus is on providing the same functionality as cloud-init with extensive test coverage and documentation and pluggable architecture (v0.1.0 release provides most of it).

    Next thing will be to add OS-specific features like (kubernetes, docker, etc.) and extend the scope to CentOS cloud and Fedora cloud.

  • Please give us your valuable comment

    Your email address will not be published. Required fields are marked *