Abstract When running a graph that was created from a Puppet manifest, mgmt has so far used a workaround for each untranslatable resource. This workaround involved an exec type resource, and shelling out to a variant of puppet resource. Using the new puppet yamlresource receive subcommand, mgmt can now send resources to a persistent Puppet process instead. The native support for this is implemented through the new pseudo-resource pippet in mgmt.
[Read More]
Puppet Scripting Host
Abstract In the course of improving the Puppet support in mgmt, I created yet another functionality for the puppet yamlresource module. It allows writing arbitrary resource descriptions to Puppet’s standard input in a YAML format. Puppet synchronizes each received resource in turn, printing a line of diagnostics in JSON format in response. This allows more flexible scenarios than running the compiler for each resource, or even just a simple process like puppet resource, which still implies heavy overhead.
[Read More]
Building The Code Mixer
This blog is not dead. It hasn’t seen any new content in a long while, which is a shame, but I did use the hiatus to recharge some creative energy. Here’s hoping progress will be more steady next year.
Narrator voice It wasn’t more steady. In fact, this article was kept around as an unfinished draft throughout 2019, not to be published before Config Management Camp 2020. It still lacks diagrams that make the graph code understandable.
[Read More]
Counting Resource Translation Misses
This is another post in the wake of CfgMgmtCamp 2018, where the mgmt hack room saw lively discussion that inspired some new ideas as well as reminding me of some ideas I had last year, but didn’t manage to implement or describe yet. This post is about one of those.
Recap Even though we now have a slick Puppet module that allows early adopters and testers to run mgmt from Puppet manifest code, our ability to run existing, complex manifests is somewhat limited.
[Read More]
Thinking About Migration From Puppet To Mgmt
Abstract We have already implemented a way to replace the Puppet Agent with the mgmt engine. It can run a graph on a machine that is derived from the machine’s Puppet catalog. The user is limited to mgmt features that can be expressed in Puppet’s DSL in this scenario. In order to unlock mgmt’s full potential, the user will have to rewrite all their Puppet code in mgmt’s language.
This presents a significant challenge for maintainers of larger Puppet code bases that are actively used and evolving.
[Read More]
Guest Post By John Arundel
When a prominent fellow tech author like John Arundel offers you to review your title, and even do it in the form of a guest post on your blog, you will probably find yourself facing the proverbial no-brainer decision. Or perhaps that’s just me. (If it is, you all should probably stop pondering so much about everyting, though.)
This review is so beautifully written, it warms my heart and fills me with pride (seasoned with a hint of imposter syndrome).
[Read More]
The Most Important Resource
Note: This article was written in early October 2016, then sat in my local git clone for almost two months, waiting for final review. This happened because of an intense conference season and some other distracting circumstance. So, it is with great relief and satisfaction that I can finally throw this at you now :-) Enjoy, and thanks for reading!
Current status: Itching to write some Go. Now what? Adding tests to mgmt is a good exercise, and I will be doing a lot more of it in the months to come.
[Read More]
Translating All The Things
Through the last months, I’ve written a lot about my work on the translator module for Puppet, which allows us to control mgmt with manifest code.
One gimmick we had imagined early was the ability to support arbitrary manifests in mgmt, by invoking puppet resource for vertices that mgmt itself cannot handle. This works now, in principle, and it nicely demonstrates the amount of work that still needs doing.
Shaving the yak Adding the generic pseudo-translator code to the module was relatively straight-forward.
[Read More]
Edging It All In
The mgmt translator for puppet catalogs was truly created from the bottom up. We started with a few resource types, and the relationships between the translated resources. This falls short for many catalogs, of course, because dependencies must often put whole classes in order, or do the same for instances of defined types.
Allowing the translator module to accept such macro-dependencies was not much work, but it did require some intense digging.
[Read More]
Puppet Powered Mgmt
Recently, I wrote a veritable deep-dive on mgmt’s new Puppet integration code, but didn’t include a good overview of how the new features look in practice. Here we go.
The original interface If you recall, mgmt has no configuration language of its own. With its highly dynamic and distributed nature, it’s also not a good fit for the languages that established tools such as puppet and chef use. (Please note that Salt has no language either, and Ansible relies on a weird YAML hybrid).
[Read More]