Puppet Management
Posted by Dave Eddy on Sep 24 2011Puppet 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.
Puppet Modules
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
packages like htop
, bwm-ng
, and 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.