Configuration Management?
You're a *developer*, right?
Then write code and stop manually configuring machines!
-
No Snowflakes
Have you ever had to make a few little tweaks to your system to get it just right for your latest feature? Perhaps a new software package, or custom network service was required. Your "snowflake system" is perfect and now unique! But when it comes time to deploy your feature, are you going to remember all those little tweaks?
- Rule: Treat all systems the same
- Rule: No one-off configurations
-
Declarative
Learn how to describe the desired "state" of your systems and let a tool do all the actual work of making it conform to your specification. Get out of the habit of needing humans to execute manual steps on your systems.
- Rule: Describe desired system state
- Rule: No human intervention for configuration
-
Versioned
Treat your system configurations like your code and track changes in a version control system. Version or label your releases and ensure that you have a rollback plan to go the last known good state in case something goes wrong during a release.
- Rule: Treat system configs like code
- Rule: Use versions/labels for releases/rollbacks
-
Peer Reviewed
Since you're treating your system configuration like code, make sure it is reviewed and tested by your peers before a release. Share the responsibility to ensure changes will not introduce regressions, bugs, or outages!
- Rule: Treat system changes like code changes
- Rule: No production release until reviewed