This blog entry is meant as a quick lookup on how to setup an initial puppet environment on linux.
The goal is to have puppet installed in a client master relationship, in which the master configuration files are stored in svn. The client is, except for the initial certificate trust, completely automated. In this part the focus is on the central server setup. As a base os for the central master ubuntu (11.04) is used.
Initial step is to install a machine with Ubuntu 11.04 in a regular way. If this is a new step, please use one of the available manuals found on the internet.
Installation of the required software can be done using the following apt command:
sudo apt-get install puppetmaster-passenger subversion
Once the packages and the dependencies are installed a local svn repository can be created with the command, we make a world accessible directory for the purpose of this manual, in realworld scenario’s a better subversion setup should be used:
sudo mkdir /subversion
sudo chmod 777 /subversion
svnadmin create /subversion
Now we have this repository we van import the default puppet configuration as a starting point.
cd /etc
sudo svn import puppet file://localhost/subversion
Make a copy of the current directory
cd /etc
sudo mv puppet puppet.old
And checkout the ’latest’ version from svn
cd /etc
sudo svn checkout file://localhost/subversion/puppet
Now create a crontab entry like the one below to do an update of the tree every minute
* * * * * root cd /etc && svn checkout file://localhost/subversion/puppet > /dev/null 2>&1
As a regular user you can now checkout the same project at a convenient location e.g. your home directory.
cd ~
svn checkout file://localhost/subversion/puppet
The first thing(s) that have to be done is add some directories and change some configuration parameters in order for the installation to work. The steps involved are:
cd ~/puppet
for dir in files plugins templates ; do mkdir ${dir} ; done
svn add *
vi fileserver.conf
edit add a section called [modules]
Now we are ready commit our first version to the revision control
cd ~/puppet
svn commit -m "Putting directory structure in place"
To add the first recipe proceed with the following steps:
cd ~/puppet/manifests
vi site.pp
import "nodes"
File { backup => main }
filebucket { main: server => "puppet"; } # replace puppet with fqdn of the puppet server
vi nodes.pp
node 'default' {
include test
}
Add the files to svn
cd ~/puppet/manifests
svn add *
Create the first recipe called test
cd ~/puppet/modules
mkdir -p test/manifests
vi test/manifests/init.pp
class test {
warn { 'do something useful' }
}
svn add test
And commit them all to the repository
cd ~/puppet
svn commit -m "first recipe for default nodes"
Within one minute the crontab will do a checkout of these changes and once a remote puppet client connects it will process the changed data.