Choria Configuration Manager

I’ve often wanted to have Configuration Management as a library - a set of tools I can use to experiment with features in my Autonomous Agents to build new kinds of highly reactive and distributed configuration management.

After spending a lot of time looking at the various options I finally caved and started working on this as a Choria project.

At first, as stated, focussed on the library aspect of the project but I soon realized that I have a long standing need that existing CM projects did not address.

That need is about my home lab, dev setups, throw away machines and places where I want to experiment with software. I want Configuration Management that’s tailor made fot these unpredictable environments where every node is not just a pet but a snow flake - completely unique.

So using this library I started a new Configuration Management project called Choria Configuration Manager - or simply CCM. The focus is on bringing Configuration Management to places it has not been before:

  • Ad-hoc on the CLI
  • In shell scripts
  • In YAML manifests
  • From any programming language that can interpret JSON
  • In Choria Autonomous Agents
  • As a library

It’s true we’ve had many of these before but CCM is focused on bringing high quality Configuration Management to all these places.

That means Idempotency, Desired State, Noop mode, Transactional behaviors (notify and subscribe), Hierarchical Data, System Facts etc.

Of course ultimately the goal is to bring Configuration Management into Autonomous Agents where it will bring the capabilities of CCM to very large scale deployments. But that’s the beauty of CM as a library, we can use it to solve many kinds of problems with consistency and compatibility between different worlds.

Read on for the details

[Read More]

Choria Hierarchical Data

As most are aware, I created the widely used Hiera system in Puppet. I introduced it in 2011, and it has since become essentially the only way to use Puppet in any meaningful fashion. Given its widespread adoption, I donated the code to Puppet, and it became integrated with Puppet core.

Unfortunately, during this integration we lost some key values—the command line and the ability to use it in scripts and elsewhere.

Meanwhile, our world is changing, and we are ever more focussing on small, single purpose compute. I intend to create a new kind of Configuration Management system that is focussed on the small, single, purpose needs. Filling the gap that has always existed - how to manage our applications rather than systems, an area Puppet has always been weak at.

There is then still the need for hierarchical data and given that I have the flexibility to start completely fresh I am at best taking some inspiration from Hiera.

So today I’ll introduce a new tool called Choria Hierarchical Data - current code name tinyhiera but that might change.

Read on for the details

[Read More]