Skip to main content

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

Project description

batou helps you to automate your application deployments:

  • You create a model of your deployment using a simple but powerful Python API.
  • You configure how the model applies to hosts in different environments.
  • You verify and run the deployment with the batou utility.

Getting started with a new project is easy:

mkdir myproject
cd myproject
git init
curl -sL https://raw.githubusercontent.com/flyingcircusio/batou/main/bootstrap | sh
git commit -m "Start a batou project."

Here's a minimal application model:

$ mkdir -p components/myapp
$ cat > components/myapp/component.py
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',
            command='bin/myapp')

And here's a minimal environment:

$ mkdir environments
$ cat > environments/dev/environment.cfg
[environment]
connect_method = local

[hosts]
localhost = myapp

To deploy this, you run:

$ ./batou deploy dev

Check the detailed documentation to get going with a more ambitious project.

Features

  • Separate your application model from environments
  • Supports idempotent operation for incremental deployments
  • Deploy to multiple hosts simultaneously
  • Automated dependency resolution for multi-host scenarios
  • No runtime requirements on your application
  • Encrypted secrets with multiple access levels: store your SSL certificates, SSH keys, service secrets and more to get true 1-button deployments.
  • Deploy to local machines, Vagrant, or any SSH host
  • Broad SSH feature support by using OpenSSH through execnet
  • Only few dependencies required on the remote host
  • Ships with a library of components for regularly needed tasks
  • self-bootstrapping and self-updating - no additional scripting needed

License

The project is licensed under the 2-clause BSD license.

Hacking

  • Make sure mercurial and subversion are installed and in $PATH.
  • Run ./develop.sh to create a local virtualenv with everything set up.
  • Run the test suite using: bin/tox
  • Build the documentation using: cd doc; make
  • Set up GPG for the examples with export GNUPGHOME=<DIRECTORY OF BATOU HERE>/src/batou/secrets/tests/fixture/gnupg
  • Make sure age is installed and in $PATH for age encryption support.

Development and release process

  • Changes should be accompanied with a changelog entry. Use ./changelog.sh to create one.
  • Releasing will create a tag and publishes the package to pypi. Use ./release-this.sh to create a release.

Changelog

See CHANGES.md.

Project details


Release history Release notifications | RSS feed

Download files

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

Source Distribution

batou-2.6.2.tar.gz (197.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

batou-2.6.2-py3-none-any.whl (178.4 kB view details)

Uploaded Python 3

File details

Details for the file batou-2.6.2.tar.gz.

File metadata

  • Download URL: batou-2.6.2.tar.gz
  • Upload date:
  • Size: 197.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.12

File hashes

Hashes for batou-2.6.2.tar.gz
Algorithm Hash digest
SHA256 4d4ca0beec9e98ca77c96e281ecba65c9ba93b29f2af89426e1ffc87e1bcde69
MD5 befbf6ed5b9dea1f6f7f187bf95f66de
BLAKE2b-256 a4b00526992f6c3c74c051dfb96ce4227dbbad417a09a4fa8ec6464301e173fc

See more details on using hashes here.

File details

Details for the file batou-2.6.2-py3-none-any.whl.

File metadata

  • Download URL: batou-2.6.2-py3-none-any.whl
  • Upload date:
  • Size: 178.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.12

File hashes

Hashes for batou-2.6.2-py3-none-any.whl
Algorithm Hash digest
SHA256 3f9f83c26ce42e9542e6157d467cb730f02b603f8f8a2584b413e1c9782ffcc9
MD5 3352ce747fdf6e18ede126a9c4d4491f
BLAKE2b-256 35799e456c43b33de6035496ef682bfe50225f2072034a188e783b97a63ee52e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page