Skip to main content

A utility for automating multi-host, multi-environment software builds and deployments.

Project description

batou

Batou is a tool to deploy services consisting of interacting components for development and production environments.

Working with batou consists of two steps:

  • defining services
  • deploying services

Defining a service

Services are defined by describing the components they are made up of as Python code that will be run during a deployment and by specifying the environments in which the components will be deployed.

Batou gives you a structure for arranging your components and a library that makes it easy to write components.

Component definition

Components are pieces of software whose configuration depends on the environment and host their are configured on as well as the configuration of other components.

Here’s a component that touches a file:

class Touch(Component):
   @step(1)
   def touch(self):
      self.cmd('touch /tmp/asdf')

Environments

Environments provide configuration to components and select which components should be installed on which hosts.

Here’s an environment definition that would be suitable for development:

[hosts]
localhost = touch

Deploying a service

Locally

You can deploy any configuration locally that you want. In the most simple case you select your devel

Remotely

In-depth

The sizing of a component depends on two factors: coherence and distribution. If some software is always build together and/or shares a lot of build code, it should be a single component or depend on a shared component. If software needs to be run on different hosts independently it should be split in multiple components or make use “features” to control partial configurations with shared code.

Other topics

  • deployment into service user
  • code push/bouncing
  • check in multiple development environments (per developer)
  • run a production deployment locally for debugging
  • use secrets management
  • use templating (inline, files)
    • jinja
    • mako
  • use base components
    • haproxy
    • buildout
  • use hooks
  • use features
  • make stuff convergent
  • host name normalization
  • cross-environment protection
  • component API
  • config helpers
    • address objects
    • netloc objects

Change log for batou

0.1.3 (2012-10-15)

  • Leave umask alone. If it must be set for service deployment, we’d better resort to .bashrc or similar.
  • Improve EXEC_PREFIX detection code to work with both Python 2 and Python 3 target versions.

0.1.2 (2012-04-12)

  • self.config_attr(‘attribute’, ‘list’) syntax for list-valued types in configuration files.
  • Call setlocale at batou-local startup to initialize locale settings throughout component execution.

0.1.1 (2012-04-02)

  • Add support for global find-links in Buildout. If a secret [buildout]find-links is found, it will be put in component.find_links.

0.1p2 (2012-04-02)

  • Packaging fix: include test fixtures to enable running tests on installed eggs.

0.1p1 (2012-04-02)

  • Correct packaging bugs: missing .txt files etc.
  • Unify license to state ‘ZPL’ consistently in all places. We used to have a mix of ZPL/BSD license statements.

0.1 (2012-04-02)

initial release

Project details


Release history Release notifications

History Node

1.7.5

History Node

1.7.4

History Node

1.7.3

History Node

1.7.2

History Node

1.7.1

History Node

1.7.0

History Node

1.6.1

History Node

1.6.0

History Node

1.6.0a3

History Node

1.6.0a2

History Node

1.6.0a1

History Node

1.5.0

History Node

1.5.0a6

History Node

1.5.0a5

History Node

1.5.0a4

History Node

1.5.0a3

History Node

1.5.0a2

History Node

1.5.0a1

History Node

1.4.0

History Node

1.4.0b7

History Node

1.4.0b6

History Node

1.4.0b5

History Node

1.4.0b4

History Node

1.4.0b3

History Node

1.4.0b2

History Node

1.4.0b1

History Node

1.3.5

History Node

1.3.4

History Node

1.3.3

History Node

1.3.2

History Node

1.3.1

History Node

1.3.0

History Node

1.3b3

History Node

1.3b2

History Node

1.3b1

History Node

1.2

History Node

1.2b2

History Node

1.2b1

History Node

1.1.2

History Node

1.1.1

History Node

1.1

History Node

1.1.0a12

History Node

1.1.0a11

History Node

1.1.0a10

History Node

1.1.0a9

History Node

1.1.0a8

History Node

1.1.0a7

History Node

1.1.0a6

History Node

1.1.0a5

History Node

1.1.0a4

History Node

1.1.0a3

History Node

1.1.0a2

History Node

1.1.0a1

History Node

1.0.10

History Node

1.0.9

History Node

1.0.8

History Node

1.0.7

History Node

1.0.6

History Node

1.0.5

History Node

1.0.4

History Node

1.0.3

History Node

1.0.2

History Node

1.0.1

History Node

1.0

History Node

1.0b33

History Node

1.0b32

History Node

1.0b31

History Node

1.0b30

History Node

1.0b29

History Node

1.0b28

History Node

1.0b27

History Node

1.0b26

History Node

1.0b25

History Node

1.0b24

History Node

1.0b23

History Node

1.0b22

History Node

1.0b21

History Node

1.0b20

History Node

1.0b19

History Node

1.0b18

History Node

1.0b17

History Node

1.0b16

History Node

1.0b15

History Node

1.0b14

History Node

1.0b13

History Node

1.0b12

History Node

1.0b11

History Node

1.0b10

History Node

1.0b9

History Node

1.0b8

History Node

1.0b7

History Node

1.0b6

History Node

1.0b5

History Node

1.0b4.dev0

History Node

1.0b3

History Node

1.0b2

History Node

1.0b1

History Node

0.2.15

History Node

0.2.14

History Node

0.2.13

History Node

0.2.12

History Node

0.2.11

History Node

0.2.10

History Node

0.2.9

History Node

0.2.8

History Node

0.2.7

History Node

0.2.6

History Node

0.2.5

History Node

0.2.4

History Node

0.2.3

History Node

0.2.2

History Node

0.2.1

History Node

0.2

History Node

0.1.6

History Node

0.1.5

History Node

0.1.4

This version
History Node

0.1.3

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
batou-0.1.3.tar.gz (23.8 kB) Copy SHA256 hash SHA256 Source None Oct 16, 2012

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging CloudAMQP CloudAMQP RabbitMQ AWS AWS Cloud computing Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page