batou


Namebatou JSON
Version 2.5.2 PyPI version JSON
download
home_pagehttps://batou.readthedocs.io/en/latest/
SummaryA utility for automating multi-host, multi-environment software builds and deployments.
upload_time2024-11-20 09:10:40
maintainerNone
docs_urlhttps://pythonhosted.org/batou/
authorChristian Theune
requires_python>=3.6
licenseBSD (2-clause)
keywords deployment
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <img width="150" src="https://batou.readthedocs.io/en/latest/_static/batou.png">

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:

```console
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:

```console
$ 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:

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

[hosts]
localhost = myapp
```

To deploy this, you run:

```console
$ ./batou deploy dev
```

Check the [detailed documentation](http://batou.readthedocs.org) 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](https://github.com/FiloSottile/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](./CHANGES.md).

            

Raw data

            {
    "_id": null,
    "home_page": "https://batou.readthedocs.io/en/latest/",
    "name": "batou",
    "maintainer": null,
    "docs_url": "https://pythonhosted.org/batou/",
    "requires_python": ">=3.6",
    "maintainer_email": null,
    "keywords": "deployment",
    "author": "Christian Theune",
    "author_email": "ct@flyingcircus.io",
    "download_url": "https://files.pythonhosted.org/packages/b9/ab/648c3eb411d0fff0fa96e4447a9dc1e72eb7c7b5d56890695c81b1c6c2be/batou-2.5.2.tar.gz",
    "platform": null,
    "description": "<img width=\"150\" src=\"https://batou.readthedocs.io/en/latest/_static/batou.png\">\n\nbatou helps you to automate your application deployments:\n\n* You create a model of your deployment using a simple but powerful Python API.\n* You configure how the model applies to hosts in different environments.\n* You verify and run the deployment with the batou utility.\n\nGetting started with a new project is easy:\n\n```console\nmkdir myproject\ncd myproject\ngit init\ncurl -sL https://raw.githubusercontent.com/flyingcircusio/batou/main/bootstrap | sh\ngit commit -m \"Start a batou project.\"\n```\n\nHere's a minimal application model:\n\n```console\n$ mkdir -p components/myapp\n$ cat > components/myapp/component.py\nfrom batou.component import Component\nfrom batou.lib.python import VirtualEnv, Package\nfrom batou.lib.supervisor import Program\n\nclass MyApp(Component):\n\n    def configure(self):\n        venv = VirtualEnv('2.7')\n        self += venv\n        venv += Package('myapp')\n        self += Program('myapp',\n            command='bin/myapp')\n```\n\nAnd here's a minimal environment:\n\n```console\n$ mkdir environments\n$ cat > environments/dev/environment.cfg\n[environment]\nconnect_method = local\n\n[hosts]\nlocalhost = myapp\n```\n\nTo deploy this, you run:\n\n```console\n$ ./batou deploy dev\n```\n\nCheck the [detailed documentation](http://batou.readthedocs.org) to get going with a more ambitious project.\n\n\n## Features\n\n* Separate your application model from environments\n* Supports idempotent operation for incremental deployments\n* Deploy to multiple hosts simultaneously\n* Automated dependency resolution for multi-host scenarios\n* No runtime requirements on your application\n* Encrypted secrets with multiple access levels: store your\n  SSL certificates, SSH keys, service secrets and more to get true 1-button deployments.\n* Deploy to local machines, Vagrant, or any SSH host\n* Broad SSH feature support by using OpenSSH through execnet\n* Only few dependencies required on the remote host\n* Ships with a library of components for regularly needed tasks\n* self-bootstrapping and self-updating - no additional scripting needed\n\n## License\n\nThe project is licensed under the 2-clause BSD license.\n\n## Hacking\n\n* Make sure `mercurial` and `subversion` are installed and in `$PATH`.\n* Run `./develop.sh` to create a local virtualenv with everything set up.\n* Run the test suite using: `bin/tox`\n* Build the documentation using: `cd doc; make`\n* Set up GPG for the examples with `export GNUPGHOME=<DIRECTORY OF BATOU HERE>/src/batou/secrets/tests/fixture/gnupg`\n* Make sure [age](https://github.com/FiloSottile/age) is installed and in `$PATH` for age encryption support.\n\n## Development and release process\n\n* Changes should be accompanied with a changelog entry. Use `./changelog.sh` to create one.\n* Releasing will create a tag and publishes the package to pypi. Use `./release-this.sh` to create a release.\n\n## Changelog\n\nSee [CHANGES.md](./CHANGES.md).\n",
    "bugtrack_url": null,
    "license": "BSD (2-clause)",
    "summary": "A utility for automating multi-host, multi-environment software builds and deployments.",
    "version": "2.5.2",
    "project_urls": {
        "Homepage": "https://batou.readthedocs.io/en/latest/"
    },
    "split_keywords": [
        "deployment"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "de0b2e5adfaa00ea96636b3d56d40c6942319fea95c7d74322f03c2e5ebdc50e",
                "md5": "04e45d6251a662884472b321ffe36de1",
                "sha256": "9e01a97addb1c936a79b4fa74109cce692b4711559aa467ad9dfc9ec8549a8d3"
            },
            "downloads": -1,
            "filename": "batou-2.5.2-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "04e45d6251a662884472b321ffe36de1",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.6",
            "size": 174897,
            "upload_time": "2024-11-20T09:10:37",
            "upload_time_iso_8601": "2024-11-20T09:10:37.841082Z",
            "url": "https://files.pythonhosted.org/packages/de/0b/2e5adfaa00ea96636b3d56d40c6942319fea95c7d74322f03c2e5ebdc50e/batou-2.5.2-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b9ab648c3eb411d0fff0fa96e4447a9dc1e72eb7c7b5d56890695c81b1c6c2be",
                "md5": "6d58290b191402061f147991c14b68a1",
                "sha256": "9cc616c2319b61f241e4c948b00fef47641f4bef5aadf0a365431791541eac29"
            },
            "downloads": -1,
            "filename": "batou-2.5.2.tar.gz",
            "has_sig": false,
            "md5_digest": "6d58290b191402061f147991c14b68a1",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.6",
            "size": 194343,
            "upload_time": "2024-11-20T09:10:40",
            "upload_time_iso_8601": "2024-11-20T09:10:40.087682Z",
            "url": "https://files.pythonhosted.org/packages/b9/ab/648c3eb411d0fff0fa96e4447a9dc1e72eb7c7b5d56890695c81b1c6c2be/batou-2.5.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-11-20 09:10:40",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "batou"
}
        
Elapsed time: 0.39383s