Stupid Puppet Trick: Identifying Groups of Hosts

My Ruby skills are practically non-existant, but I’ve managed to put together a relatively readable custom fact for identifying my Torque queues by a node’s hostname. Behold, HostgroupFact! Now I can factor out my hosts.equiv files back to a parent class, rather than duplicating the same file specifications on a per-queue basis. class cluster-host inherits …

Stupid Puppet Trick: Poor Man’s Undo

If I apply a set of classes to a puppet client, I may need to roll back those classes’ changes later. Granted, I could just edit out those classes, reformat the system, and rebuild it from scratch, but there may be times when I want to undo my changes in a more granular fashion. So …

I Killed the Mail Server Today

It all started so simply: I was going to set up a little Xen instance to be my next cluster submit host, and needed a spare address for it: I started setting up an instance for ch208i.cae.tntech.edu, since it was no longer on the Xen host like it was several months ago. Crap, the reason …

Giving a Presentation at the Tennessee Higher Education IT Symposium

I’m heading to the IT Symposium this morning to give a talk on creating a managed Unix infrastructure from scratch, somewhat of a summary of several things I’ve posted here over the last year or so. Thanks to the folks on #puppet who read over them and gave editing suggestions. Slides for presentation Handouts for …

Stupid Puppet Trick: Agreeing to the Sun Java License with Debconf Preseeds and Puppet

I had a user ask for Java to be installed on the cluster systems, so I started up by making a simple JRE5 module for puppet, but this first one didn’t quite work: class jre5 { package { “sun-java5-jre”: ensure => latest; } } It doesn’t work because Sun wants you to agree to its …

Obscure Puppet Error #1

(First in a series of some finite positive number, for the greater edification of Googlers everywhere.) If you get an error of err: Could not retrieve catalog: Could not parse for environment development: Syntax error at ‘Debian’ at /etc/puppet/master/manifests/os/Debian.pp:1 on a Debian.pp that only has one line of class Debian {}, just go ahead and …

The autostow is Dead, Long Live stowedpackage!

I had posted earlier about distributing stowed packages via rsync and puppet to my managed systems, but that method wasn’t quite what I wanted: There was one more file to manage outside my regular puppet manifests, and I’d have to remember to keep them both up to date and in sync. There wasn’t an easy …

Client Configuration Management

Back at the infrastructures.org mothership, client configuration management is described as everything that makes a host unique and/or part of a particular group or domain. And for Unix-like systems, everything pretty much comes down to configuration files, services being enabled/disabled, and cron jobs. Hmm. Configuration files Services Cron jobs Looks like Puppet pretty much handles …

Client File Access

The infrastructures.org folks list two primary goals of what they call “client file access“: first, consistent access to users’ home directories, and second, consistent access to end-user applications. Some of the things they warn against, such as automounters and the /net directory, we never thought of using to begin with. Their need to consider systems …

File Replication Servers

Back when the infrastructures.org folks were writing their pages, the page for file replication servers described a need to keep current copies of configuration files in /etc and all programs and other data from /usr/local on all the managed systems. In puppet structures, every file or other resource is just a part of a higher-order …