Something big is happening
Despite the ever-changing buzzwords, there’s really not much new under the sun in the IT world. After all, today’s cloud-centric environment is not so different from the mainframe/dumb terminal setups of the 1980s. GUI-based management fades in and out of fashion (here’s hoping it stays out this time!). All else being equal, the best way to predict the future of IT is to reimagine the past, just with more smartphones.
But the DevOps trend of recent years has given rise to at least one IT management tool that doesn’t seem to have a clear precursor. Forget quiet installs and lite-touch deployments; we now have a means of automating system state at massive scale, using declarative files that live in a twilight zone between code and configuration. Yeah, I’m talking about configuration management tools – Chef, Puppet and all the rest. And as far as I know, this is that rare IT breakthrough that’s pretty much unprecedented.
How configuration management works
The individual implementations vary, but at bottom, most configuration management tools rely on the same two components:
- A central management node that keeps track of the master configuration (how all the other systems should look)
- Any number of slave systems that configure themselves based on what the management server says.
You, the developer (and yeah, operations people are developers now – it’s time we all accepted that), write your master configuration files, often in a well-known format like YAML, and commit them to source control. If your code repository is synchronized with the master server, the master can immediately make your updates available for all its slaves. The slave nodes may check in periodically with the master and retrieve instructions (a “pull”-based setup) or they may just rely on the master to force them into compliance as soon as updates are available (a “push”).
The automation potential of this kind of environment should be obvious. No more patching individual servers by hand, no more one-off recipes and – most importantly – no inconsistent configurations across the server farm. Granted, if you break something in the master configuration files, you break everything – that’s why automated testing should be a key component of any such setup.
That’s probably the broadest possible overview of what configuration management looks like in a DevOps shop. But there’s so much more to learn! So without further ado, I’d like to declare “Configuration Management Week” on this blog. Several awesome guest bloggers have agreed to contribute articles about their favorite configuration management tools, so even if you are a CM veteran, hopefully you’ll be exposed to something you haven’t seen before. And if configuration management is totally new to you, I hope you’ll get a good feel for why this strategy could transform the way you manage your IT infrastructure. I look forward to learning and sharing with you!
Configuration Management Week schedule (updated daily with links):
Monday 8/17: Intro to Configuration Management
Tuesday 8/18: Intro to Ansible (guest post by Luke Seelenbinder)
Wednesday 8/19: Intro to DSC (guest post by Jon Carl)
Thursday 8/20: Intro to Salt (guest post by Greg Bell)
Friday 8/21: “Readable Code” CloudPleasers cartoon