57/365 - good morningOver my winter holidays I spent some time on learning how to manage my systems with puppet, the next generation configuration management system.

This handy piece of software is written in ruby and provides it's own ruby-like scripting language to define configurations for hosts. It currently manages all my cluster nodes and all my desktop and server systems.

The so called manifests that are now used to provide uniform configuration for all those systems at Fladi.at can be found on my Subversion repository. I will enhance those manifests in the next weeks to also include Apache virtual host configurations and Subversion repository management.

So far, only the basic system level configuration is managed by puppet at Fladi.at (SSO, logging, LDAP-Avatars for GDM, Udev and permissions for Nvidia device nodes, ...). Puppet provides a solution to almost every aspect of an unix-style OS to be managed by a centralized instance but it requires a lot of knowledge on its scripting features which I'm currently lacking.  Just keep visiting this blog to stay informed on further major additions to the subversion repository.

To use puppet on a Debian system just install the appropriate package and make sure that the "puppet" hostname in your DNS search scope (see /etc/resolv.conf) points to a server running the puppetmaster daemon. In case of Fladi.at it's puppet.fladi.at which serves all the configuration directives to the local puppet instance.

aptitude install puppet

This will pull in some dependencies like ruby and facter. A good starting point for setting up your own puppetmaster server is the "Getting Started Recipe".

For the Debian package it is possible to set the name of the server puppet will pull get it's configuration from in /etc/puppet/puppet.conf:

[main] server=puppet.example.com

To pull my configuration for Fladi.at into a puppetmaster for further modification just make sure that a Subversion client is installed and run:

svn co http://subversion.fladi.at/sso/ /etc/puppet/ ln -s /etc/puppet/templates/* /var/lib/puppet/templates/

Now just start the puppetmaster and test if your clients are getting their configuration.