multi-(component | host | environment | platform) deployment

batou makes it easy to define and perform automated service deployments. It tries to combine the simplicity of Fabric’s SSH automation with the reliability of convergence/idempotence-oriented systems like Puppet.

It is developed by the people running the Flying Circus and made available under the 2-clause BSD license.

Services are described by components:

from batou.component import Component
from batou.lib.python import VirtualEnv, Package
from batou.lib.supervisor import Program

class MyApp(Component):

    def configure(self):
        venv = VirtualEnv('2.7')
        self += venv
        venv += Package('myapp')
        self += Program('myapp',

Environments map components to hosts:

prod00 = nginx, haproxy
prod01 = database
prod10 = myapp, supervisor
prod11 = myapp, supervisor

Local deployments take care of a single host:

$ ./batou local

Remote deployments cover a whole environment:

$ ./batou remote production



batou is developed as open source / free software. If you want to get in touch and contribute, you are more than welcome.