The Beauty of Bcfg2

Mi 08 August 2018 | tags: bcfg2

At work, I often use bcfg2. Most people ask what the hell it even is. bcfg2 is a very mature configuration management system. It is a competitor to the alternatives like salt, ansible, chef, or puppet.

It utilizes an agent that is usually run using cron or systemd.timer-units. But what makes it stand out from the crowd?

It is very mature and has a very stable codebase. You can rely on the fact that the underlying features will be available, and work the same, in 2-3 years. Also it has a ridiculous backward-compatibility, reaching to python 2.5. This is made possible, as bcfg2 will reach adulthood in a few years. The initial commit dates back to Tue Oct 21 19:33:12 2003.

and why isn't anybody actively using it?

Well, technically, there is a userbase that supports bcfg2, but it is a small one. The Documentation lacks depth, so there are no simple examples for most workflows.

The tooling around it might seem sparse at first, but once you get to know all the features you will see that most of the common task can be covered by bcfg2 internal tools. - creating your own ca - distributing ssh authorized keys - importing data from other sources (TemplateHelper)

Another drawback at the moment is that it does not yet fully support python3 (looking at 2020...). This has to change, or bcfg2 will die within the next few years.

Call for Help

This is a call for help to gather more support for bcfg2. It already covers a broad range of tasks and stands out due to its simplicity and maturity. bcfg2 needs full python3 support and more documentation to make it easy for admins to use it as configuration manangement tool.

I really like it, because it is a tool where the knowledge to just use it (e.g. deploy file x to server z) is very small, but still support a broad range of configuration complexity.

Maybe, I will publish a few more articles about how you can use bcfg2 and give a few examples that are not covered in the docs.

social