[Server-devel] Puppet @ XS

Martin Langhoff martin.langhoff at gmail.com
Thu Sep 30 17:38:11 EDT 2010

Hi list,

Amongst many things that have kept me away from doing XS dev work,
I've recently been working with the local team for de La Rioja
(Argentina) deployment.

One of the key topics was remote admin, as they have a fast-growing
number of XSs. So it was a good chance to rip into Puppet. The result
is a set of sample Puppet configurations. As an old isconf hand, I was
very gladly surprised with Puppet... and then I realised it's all Luke
Kanies' work! (See
http://madstop.com/2008/11/01/a-short-history-of-puppet-pt1/ )

 =http://wiki.laptop.org/go/XS_Puppet follows =

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 [http://www.puppetlabs.com/puppet/introduction/ 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.

= Getting started =

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
[http://docs.puppetlabs.com/ 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

See the [http://dev.laptop.org/git/users/martin/puppet-example.git/tree/README
README] and the actual config files and scripts for working
configurations and code.

=Puppet Documentation=

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.

* http://docs.puppetlabs.com/
* [http://apress.com/book/view/9781430230571 Pro Puppet, by James
Turnbull, Avi Miller]
* [http://apress.com/book/view/1590599780 Pulling Strings with Puppet:
Configuration Management Made Easy, by James Turnbull]
* [http://groups.google.com/group/puppet-users/browse_thread/thread/b6db63f1bb84166e?fwc=1
"Puppet Users" list discussion about Puppet on the XS]

=To Do=

* Document how to bootstrap this from kickstart
* Implement usbmount scripts to hook into puppet, so disconnected XSs
can read configuration from a USB disk

 martin.langhoff at gmail.com
 martin at laptop.org -- School Server Architect
 - ask interesting questions
 - don't get distracted with shiny stuff  - working code first
 - http://wiki.laptop.org/go/User:Martinlanghoff

More information about the Server-devel mailing list