Getting Started With Configuration Management
By @sascha_d.
Configuration management! define and idempotently enforce system state across a bunch of machines.
But it’s not about the tool. But you need one.
You should care about package repositories!
Anyway, she was an infra queen who loved to rewrite things by hand, but finally realized this was a blocker. Needed repeatable process. Started to look at all the CM stuff but it was really overwhelming, there’s so much out there.
Lose the baggage
Need to remove your fear, inflexibility, and arrogance. You have some, you’re an engineer. You often need to change how you think about things. CM and automation is not a “threat to your job.”
It’s OK not to know and to admit it. There’s a lot of crap out there. What’s a ruby gem? I don’t know either. It’s OK. You can go learn what you need. Everyone’s “faking it,” that’s how it works.
“I can’t code/I don’t program/I’m not a developer.” It’s OK, you can – you don’t have to be a pro dev. You get most of the concepts from doing good CM.
It’s not “just scripts” – this is all hard work and code.
Also, just because you understand systems doesn’t mean you understand CM – and moving that understanding from the gut to the mind.
Ask why things are the way they are; don’t accept constraints just because they’re there now.
Learn your tool
Resist the urge to “automate the world.” Pick something small but impactful, light on data.
Understand the primitives of your tool. Don’t just port your bask scripts or break out to a bash block.
Read the source code. You don’t have to write it to read it. You will see what really happens.
Test! Learn to test! vagrant, test-kitchen, bats, jenkins (vagrant book free this week only!)
Own or get pwned
Infrastructure is an ecosystem, and you need to have curators for the tools.
There’s acceptable and unacceptable technical debt.
Curate what you’re installing – if you just rampantly download newest from the Internet you get jacked.
Own your package repos. Have one. Have base/custom. Don’t just have stuff sitting around.
Own your build tools – artifactory/nexus/jenkins/travis.
Own your version control. Well, more “use” version control.
Own your integrity. Don’t disable CM, don’t do different in dev and prod, don’t deploy differently in different envs… You have control over this. [Ed: We are bad about this. Whether a change is puppet or manual or rundeck is a big ass mystery in our environment. Angry cat.]
The end!