I have been playing around with various provisioning systems with the goal of being able to just boot up a machine, and have it join my cluster automatically. I have been playing around with Ubuntu MAAS, and Salt lately, and almost have a really good system set up. Key to both MAAS and Salt is control over DNS settings on the local network. I have been using a Linksys router with DD-WRT installed.
I have set up DD-WRT so that machines on my network are accessible by [hostname].crossies.com and have set up some static IPs so that my laptop is called ‘salt’. It will be the salt master.
I am using DNSMasq to point pxe boot VirtualBox virtual machines at the MAAS server. VirtualBox VMs don’t seem to want to pxe boot by default, so I had to install ‘extensions’ to VirtualBoxManager to enable network boot.
I haven’t quite gotten MAAS to provision machines all the way, but I think that I will be able solve those problems, and modify the preseed files to get SaltStack to install when a machine boots up.
With salt, I have made some state files that will install Postgresql and set up streaming replication with the help of some scripts that use salt to run commands on minions. I feel that there must be a better way because I could do most of what I’m doing over ssh, but generating and signing ssl certs requires a coordinated, ordered, and secure sequence of events that I just couldn’t figure out how to accomplish using salt states or even pillar.
Overall, I feel like I’m zeroing in on a silver bullet provisioning system… One that will just work.
Try ansible.