• What is the system doing? • What is the system supposed to be doing? • What versions of things exist in the system? • What is and is not installed? • What things changed and when and by whom? System State @rynchantress ConfigMgmtCamp
• "Known" state wasn't actually known • Configuring system state didn't account for unknown applicaBon state • Undo in configuraBon state couldn't undo changes to applicaBon state Wat. @rynchantress ConfigMgmtCamp
Application state @rynchantress ConfigMgmtCamp • What is the applicaBon doing? • What does the applicaBon care about? • What things changed and when and by whom? • It's always a caching problem.
• System state interacted with configuraBon change to cause new system state • Unknown and inconsistent configuraBon state across infrastructure • Uncontrolled source state changes combined with inconsistent configuraBon state Wat. @rynchantress ConfigMgmtCamp
Configuration State @rynchantress ConfigMgmtCamp • What did humans tell the config management to do? • What does the config management system know about the world? • How is the config management tool running?
Source State @rynchantress ConfigMgmtCamp • Sources of packages • Sources of applicaBon code • Sources of config management code • Whatever else you can put in source control, have fun!
1.Don't forget about applicaBon state 2.Knowns aren't always known 3.Monitor your configuraBon state 4.Don't leave your states unsupervised horrible lessons learned @rynchantress ConfigMgmtCamp
• Wildly and unknowably different configuraBon states • Current configuraBon state not fully captured in source state • Wat even was in the terraform plan output again?! Wat. @rynchantress ConfigMgmtCamp
1.Don't forget about applicaBon state 2.Knowns aren't always known 3.Monitor your configuraBon state 4.Don't leave your states unsupervised 5.Enforce source state completeness and config state consistency horrible lessons learned @rynchantress ConfigMgmtCamp
• ApplicaBon state • System state • ConfiguraBon state • Source state • Terraform state • Human state Let's talk about state @rynchantress ConfigMgmtCamp
1.Don't forget about applicaBon state 2.Knowns aren't always known 3.Monitor your configuraBon state 4.Don't leave your states unsupervised 5.Enforce source state completeness and config state consistency 6.Get rid of unreliable tools 7.Make sure your tooling is usable by humans horrible lessons learned @rynchantress ConfigMgmtCamp
@rynchantress ConfigMgmtCamp THANK YOU! Special thanks to House House for creating Untitled Goose Game and Samuel Fine for creating the Untitled Goose Game Generator