A workflow for cloud instances baking and provisioning
I love how the devops community seems to strive to make local offline development unclear and awkward if not impossible with their tooling. I look at the flow diagram of the deploy and think I get why this exists wearing my sysadmin hat but no developer I try to explain this to is going to actually get super powers by doing this.
I cannot help seeing with irony the ‘dev’ in devops. Rarely is energy put into the development process, how to get a local clean environment setup every morning in minutes without any external coordination (ie. instead hand waving to ask a sysadmin for a dumpster dev VM) and provide developers the confidence that what works with the VM technology of their choosing on their workstation will work when deployed to production. For that to happen, you need to make both environments similar, I cannot see how or where todays tooling helps here.
Solutions, like chef/puppet/‘bakery-stack’, seem to live in a world that once software is written it remains unchanged, or comes through some external “not our problem space” .deb/.rpm/nonsense. I want myself and my colleagues to run through a process limited in speed by only how quickly they use the mouse and keyboard (ie. seconds):
Salt Stack, the least crap though just as slow of what I have used recently, at least can be run in masterless mode and apply an arbitary state to a local empty VM…and probably with some work in offline mode. Gets me some of the way, but I still am left feeling wanting.
I know ancible apparently can do ‘masterless’ too, but the documentation (inc for Salt Stack) is sketchy and the gernal userbase seem unaware of the masterless configuration; if not frowning on it.
 docker might make local and production the same, but on the flip side it makes the deploy and running in production so god awfully hard, you kind of forget why you bothered in the first place
For local development, Ansible just needs ssh access to the vm and the ability to sudo. Vagrant has a solid integration for automating this process.