Chef Magic

November 1, 2020

I’ve recently started a new cookbook project called chef_magic. In my experience of working with Chef products at many different customer sites, I’ve found need to dig around outside of the box on more than one occasion to make operating at scale much simpler than can be done when following the “book”.

Ultimately, this repository is a tool for advanced Chef admins working on using chef at the scale of 10’s or 100’s of thousands of nodes. It is not designed to be used by people that are new to Chef, or that don’t understand Ruby, or the ways in which Ruby data structures and Chef interact during a Chef Client run.

So far, we’ve put helpers together that will allow a user to override attributes by reading data from files or from APIs that can then be converted into the node mash object. I’ve also added a few system helpers for working with data bags as a source of override information, as well as some handy tools when working with Windows systems (like finding the %sysroot%). We’ve also managed to put together some custom resources for doing things like managing InSpec waiver files.

If there are any Chefs out there with a desire to help on this project, it’s available publicly to be forked and I’m welcoming all contributions. I really want to thank the following individuals for their help as well in getting this cookbook off the ground:

Again, the majority of tools in this cookbook are not to be used lightly. I won’t be putting this out in the public Supermarket as I don’t want people to blame me for seriously messing up their environments because they didn’t know what they were doing with the code we’ve put together here.

However, if you need to improve upon your effortless design or when using policyfiles, these tools have the potential to help you a lot.