skip to navigation
skip to content

loom 0.0.7

Elegant deployment with Fabric and Puppet.

Latest Version: 0.0.18


Elegant deployment with [Fabric]( and Puppet.

Loom does the stuff Puppet doesn't do well or at all: bootstrapping machines, giving them roles, deploying Puppet code and installing reusable Puppet modules. It's useful for both serverless and master/agent Puppet installations.


$ sudo pip install loom

Getting started

First of all, you create `` and define your hosts:

from fabric.api import *
from loom import puppet
from loom.tasks import *

env.user = 'root'
env.environment = 'prod'
env.roledefs = {
'app': ['', ''],
'db': [''],

You can then define any third-party Puppet modules you want in a file called `Puppetfile`:

forge ""
mod "puppetlabs/nodejs"
mod "puppetlabs/mysql"

(This is for [librarian-puppet]( a tool for installing reusable Puppet modules. It can also install from Git, etc.)

Your own modules are put in a directory called `modules/` in the same directory as ``. Roles are defined in a magic module called `roles` which contains manifests for each role. (If you've used Puppet before, this is a replacement for `node` definitions.)

For example, `modules/roles/manifests/db.pp` defines what the db role is:

class roles::db {
include mysql
# ... etc

And that's it!

Let's set up a database server. First, bootstrap the host (in this example, the single db host you defined in `env.roledefs`):

$ fab -R db puppet.install

Then install third party Puppet modules, upload your local modules, and apply them:

$ fab -R db puppet.update puppet.apply

Every time you make a change to your modules, you can run that command to apply them. Because this is just Fabric, you can write a task in `` to do it too:

def deploy_puppet():

Then you could use the included "all" task to update Puppet on all your hosts:

$ fab all deploy_puppet

OS support

It's only been tested on Ubuntu 12.04. I would like to support more things. Send patches!


Look at the source for now. It's all Fabric tasks, and they're pretty easy to read. (Sorry.)

* [Ben Firshman](
* [Andreas Jansson](
* [Steffen L. Norgren](
File Type Py Version Uploaded on Size
loom-0.0.7.tar.gz (md5) Source 2012-11-07 8KB