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.
Metadata
Release files for batou 2.7.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| batou-2.7.1.tar.gz | 199.6 kB | Without provenance | Details for batou-2.7.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| batou-2.7.1-py3-none-any.whl | Python 3 | none | any | Details for batou-2.7.1-py3-none-any.whl |
Total release size: 380.2 kB
Release files / batou-2.7.1.tar.gz
| Download URL | batou-2.7.1.tar.gz |
|---|---|
| Size | 199.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
39762e4caf8d6bc076968efc557c74f90f6a91a9149ac838eaf7c15501f47718
|
|
BLAKE2b-256 checksum How to use checksums |
5ffb7b05a1a53a4689f4fbd667937df4a1b6203f68ebc8fedaceac72963f585e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.13
|
Release files / batou-2.7.1-py3-none-any.whl
| Download URL | batou-2.7.1-py3-none-any.whl |
|---|---|
| Size | 180.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7427ba29c1e201991f6bf83e2acd3f73537785c54e404cfb24c4e81965283b75
|
|
BLAKE2b-256 checksum How to use checksums |
702ba92e8fcaed0467db2cf69a89b7237acd55161e4d086994102f8fb798559d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.13
|
Security for batou 2.7.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.