Background: I'm a new build engineer tasked with a good bit of overhaul. Our build system is going moving to a collection of 8 local servers. I'm excited for the task, but a bit daunted. What I'm looking for is a little bit of advice. As a casual reader of HN, I have caught glimpses of some relevant tech, but piecing them together is tricky.
Constraints:
- All of the build servers must be running Windows.
- A master CI server will already be running, so all of these servers will simply be slaves.
- Able to wipe clean and start fresh regularly.
- They wont all be the same image, some builds require different versions of tools.
- May not need all 8 at any given time.
Thoughts:
- With the different and dynamic nature of the build machines, something like chef, puppet, or salt seems to be best for managing configurations.
-- Things that seemed immensely useful in Salt were the windows software repositories[1] and in puppet the packages system.[2] The system for Salt seems more simple, and I didn't see anything comparable for Windows with Chef.
- Virtualization also seems ideal, but my inexperience makes me wonder if it is worth the trouble.
-- If virtualization is a sane approach, what are the options here? OpenStack is the only thing that I know of that (I think) fits this case.
- Once the machines are up and running with Windows, I can manage. Getting it to that point is the biggest mystery to me. If I'm able to use virtualization would I be using something like Vagrant to get the images ready?
Thanks for any advice or links provided. I hope this was coherent enough, if not, feel free to ask me for any clarification.
[1] http://docs.saltstack.com/ref/windows-package-manager.html
[2] http://docs.puppetlabs.com/windows/writing.html#packagepackage