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
mercurialandsubversionare installed and in$PATH. - Run
./develop.shto 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
$PATHfor age encryption support.
Development and release process
- Changes should be accompanied with a changelog entry. Use
./changelog.shto create one. - Releasing will create a tag and publishes the package to pypi. Use
./release-this.shto create a release.
Changelog
See CHANGES.md.
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.7.1.tar.gz
(199.6 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
batou-2.7.1-py3-none-any.whl
(180.6 kB
view details)
File details
Details for the file batou-2.7.1.tar.gz.
File metadata
- Download URL: batou-2.7.1.tar.gz
- Upload date:
- Size: 199.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
39762e4caf8d6bc076968efc557c74f90f6a91a9149ac838eaf7c15501f47718
|
|
| MD5 |
7a6578ff092fb695333bfe5d85578409
|
|
| BLAKE2b-256 |
5ffb7b05a1a53a4689f4fbd667937df4a1b6203f68ebc8fedaceac72963f585e
|
File details
Details for the file batou-2.7.1-py3-none-any.whl.
File metadata
- Download URL: batou-2.7.1-py3-none-any.whl
- Upload date:
- Size: 180.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7427ba29c1e201991f6bf83e2acd3f73537785c54e404cfb24c4e81965283b75
|
|
| MD5 |
00d0c7b13116d2a5919fb502771dc064
|
|
| BLAKE2b-256 |
702ba92e8fcaed0467db2cf69a89b7237acd55161e4d086994102f8fb798559d
|