Skip to content

Dammit, Martin! This is compressed air!

So I previously mentioned I'd knocked up a simple automation tool, for deploying policies (read "scripts") from a central location to a number of distinct machines.

There seemed to be a small amount of interest, so I've written it all up:

  • slaughter - Perl System Administration & Automation tool

Why slaughter? I have no idea. Yesterday evening it made sense, somehow, on the basis it rhymed with auto - (auto as in automation). This morning it made less sense. But meh.

This list of primitives has grown a little and the brief examples probably provide a little bit of flavour.

In short you:

  • Install the package upon a client you wish to manage.
  • When "slaughter" is invoked it will fetch http://example.com/slaughter/default.policy
    • This file may include other policy files via "IncludePolicy" statements.
  • Once all the named policies have been downloaded/expanded they'll be written to a local file.
  • The local file will have Perl-fu wrapped around it such that the Slaughter::linux module is available
    • This is where the definitions for "FetchFile", "Mounts", etc are located.
  • The local file will be executed then removed.

All in all its probably more complex than it needs to be, but I've managed to get interesting things primarily with these new built-in primitives and none of it is massively Debian, or even Linux, specific.

ObSubject: Jaws

Comments On This Entry

  1. [gravitar] Pedro Melo

    Hi,

    this looks a lot like CFEngine and Puppet...

    Best regards,

  2. [gravitar] Jeff Schroeder

    While initial setup takes a bit of work, one of the most elegant and easy to use configuration management systems I've ever used was spine from ticketmaster.
    http://code.ticketmaster.com/index.php?page=spine-overview

    Granted, I was in their systems engineering department and we managed a tinge under 3k systems with it at the time (2008-ish) so I might be a bit biased towards it. That being said, the engineers working on it are really friendly and exceedingly helpful to anyone trying to set it up. The documentation could use a bit of love, but again, it works very well for all of ticketmaster.com, why not for you? :)

  3. [author] Steve Kemp

    Pedro I've written about CFEngine and Puppet a fair bit in the past and used both.

    On the whole it isn't too like either:

    • No key setup/management/use.
    • Everything is initiated from the client.
    • No formal classes or factor facts, just a few variables such as $fqdn, $kvm, $raid.

    Of course some of the primitives have been based specifically on things I do with CFEngine like "AppendLineIfMissing", or "FetchFile".

    Jeff that does look interesting - I'm going to explore the documentation some more. Though I think my comments previously about choosing a system apply here. (e.g. No *BSD support, no Solaris support.)