Setup Puppet to configure your network servers
Growing companies at some point are faced with the increased workload to setup, configure and maintain their servers and applications. Administrators try to script repetitive tasks and ultimately look for solutions that are scalable and provide a central management tool base. There are several software packages available, commercial and open source ones.
Puppet is probably the most used open source configuration management package available today and more system administrators and software developers are interested in setting it up within their environment. An excellent book about Puppet (Pulling Strings with Puppet) is available and so are numerous online articles and tutorials. However, lots of online resources are just not quite complete and can lead to lots of frustration, especially in the setup and configuration of Puppet.
So here is another step by step tutorial about how to install and setup Puppet to the point where we can run a simple recipe residing on the server (puppetmaster) and execute on the client. For this illustration we’ll install Puppet on Ubuntu 10.10 using a deb package.
Configure Network and DNS
Setting up configure hostnames on server and client is crucial. Since Puppet uses self signed certificates to secure communication, it’s essential that network is setup properly and hostnames are configured with fully qualified domain names.
Let’s open /etc/hosts and add the necessary entries. (note: If you use a DNS server in your network, those setting changes should be made on your DNS server and not the hosts file)
server hosts file (assuming server = 192.168.1.10, client = 192.168.1.20):
127.0.0.1 localhost.localdomain localhost puppet 192.168.1.10 puppet-server01.example.com puppet-server01 puppet 192.168.1.20 puppet-client01.example.com puppet-client01
# hostname => puppet-server01 # hostname -f => puppet-server01.example.com
client hosts file:
127.0.0.1 puppet-client01.example.com localhost 192.168.1.10 puppet-server01.example.com puppet-server01 puppet
# hostname => puppet-client01 # hostname -f => puppet-client01.example.com
In addition, you should ensure that no firewall is blocking port 8140, as Puppet is communicating on this port.