Most OLPC deployments have a large number of schools. When deploying School Servers, this means there is a large number of XSs. Managing them is a challenge.
We use Puppet to run the administration of these servers. Puppet is an outstanding server management tool, well known, and extensively documented.
To keep matters simple and scalable, we use some specific techniques:
- We focus on maintaining all the XSs with the exact same code and configuration. Where some XSs must behave differently, we handle that in the code deployed to the XS itself. For an example of this in action, see how the httpd service picks an appropriate configuration at startup.
- We use a tiny part of the power of Puppet to keep things simple. Puppet is enormously powerful, and can lead to complex configurations.
Set up a "Puppeteer" -- the 'configuration server'. This server needs to have a stable FQDN and to be reachable by all the XSs (usually this means a public IP address). See the excellent puppet documentation on how to setup a Puppet server. Grab the example configuration we provide below.
Installing Puppet in your XS
On XS-0.6, you will need to
- Install puppetd and all its dependencies (TODO: list the dependencies)
- Install an /etc/sysconfig/puppetd file naming the FQDN of your "puppeteer"
- Set the service to run (and start it up)
Get started with the example configuration
We have an example configuration, based on an actual deployment successfully using Puppet http://dev.laptop.org/git/users/martin/puppet-example/tree/
See the README and the actual config files and scripts for working configurations and code.
Puppet has excellent and extensive documentation. Sometimes it is daunting -- puppet allows very fine grained control of what is on every server. We only use a small part of Puppet, so you can skip the complex parts.
- Pro Puppet, by James Turnbull, Avi Miller
- Pulling Strings with Puppet: Configuration Management Made Easy, by James Turnbull
- "Puppet Users" list discussion about Puppet on the XS
- Document how to bootstrap this from kickstart
- Implement usbmount scripts to hook into puppet, so disconnected XSs can read configuration from a USB disk