Puppet from Puppet Labs is a utility for controlling multiple machines from a single point. It allows for easy server roll outs, as well as keeping multiple servers in the same state. I have a server dedicated for Linux KVM virtualization, and because of this I have spun up about 10 VM’s, so 10 individual Linux installations. I use puppet to make sure that they all have the packages installed that I use on a daily basis, as well as a to make sure that anytime I make a change to my bash or zsh rc it gets populated out to all my servers. Also I store my public key in puppet, so any new server I provision will automatically be populated with it so I can easily SSH into it in a more secure manner.
My virtual servers
dave@[nexus]:~/$ virsh list --all Id Name State ---------------------------------- 46 b-puppet running 47 b-ssh01 running 48 codemaster running 49 frontend running 50 gradius running 51 gvoice running 52 ldap running 53 ns1 running 54 overmind running 55 porthose running 56 redbull running 57 zfs-test running 58 skyevm running - template_ubuntu-server-11.04-amd64 shut off
Using puppet I am able to control all of these virtual servers, as well as the virtual host itself, and the storage server that backs it. When I spin up a VM now, all I need to do is install the puppet client and point it to my puppet server and it pulls in the necessary configs to make that VM ready to use.
dave@[overmind]:/etc/puppet/modules/$ ls -1 bwm_ng/ htop/ mini_httpd/ motd/ ntp/ puppet/ users/ vim/
When a new server is provisioned, puppet will insure that some of my favorite
vim are installed. I also have a module called
‘motd’ that will allow me to easily control the /etc/motd.tail file using the
power of puppet templates. NTP is also a good package that I install to make
sure that all new servers are synced on the time, so there are no discrepancies
in that. Another thing that is key here is I push out the puppet client
configs, which will take the puppet client from a default installation, to one
that is set to work with puppet in my environment.