Chef workflow question...
Looking for a little advice here on how to move forward with some Chef built infrastructure.
I started going through my chef repo this Christmas - and some ugly little platform version hacks started appearing - so I got to thinking about how better to structure things - and here I am.
We have about 20 Rackspace Cloud Ubuntu 10.0.4 boxes running various parts of nonfiction's web infrastructure - they're working great and are current with all patches, etc. I'm not likely to "dist-upgrade" them - but they're going to be alive for a few years at least.
I built them with my first Chef recipes and am now wanting to:
- Start deploying Ubuntu 12.0.4 boxes on Rackspace's new OpenStack architecture.
- Not break my existing infrastructure - they work great - even though the cookbooks are a little raw in places.
- Update my chef cookbooks and use more community cookbooks with Berkshelf, Vagrant, Jenkins, etc.
- Stop using roles - which were used extensively before.
These boxes are built and all installed packages and software are managed with Chef - but much of the data on them isn't managed in Chef - clients upload their own files, etc. Between DNS that I don't manage 100% and that customer data, it's not super simple to just "redeploy" and rebuild everything.
So my plan is to:
- Create an environment called "lucid".
- Freeze all the current cookbook versions and assign them to that environment.
- Create a new environment called "precise"
- Deploy new boxes using that environment.
- Fork my own chef repo and rebuild / test with Berkshelf, Vagrant, Jenkins, etc.
- If a Lucid box can be discarded and rebuilt with Precise - I'll do it - but likely not all of them.
What do other people do when they're updating their infrastructure like this? New chef repo? Keep it all in one? Any tips? I've been looking through all sorts of links online and haven't seen much of that sort of discussion.
Reading through this article it looks like he converted his chef-repo and just kept moving - that sort of scares me a little bit - but I guess is an option.
Any tips / links would be appreciated.