batou was developed with a number of ideas in mind:
Deploying should always be just a single command.
Python is the language batou uses. In case that you use Python to write your application the version of Python that batou runs on is independent of the version of Python your application runs with.
We expect little from the remote environments regarding software dependencies: Python 3.5+, OpenSSH, and rsync, Mercurial or git are sufficient.
batou does not become an active component during your application’s runtime. batou automates what a sysadmin would do – in a repeatable and documented manner.
It should be easy to switch between the declarative part of the model and the imperative implementation.
Deployment code that becomes too complicated should be easy to simplify by breaking it up into smaller pieces.
batou was not originally intended to perform provisioning or system configuration tasks. However, over time this is likely to evolve.
batou should be working with your existing applications without too many hassles.
No silver bullets: we want to make things simple for you but we do not insulate you from hurting yourself completely.
The name “batou” is taken from the animated movie “Ghost in the Shell”.
batou is built on the shoulders of giants. We’re extremely happy to be part of an active open source community:
Guido and the Python core developers – we could not have built this without such an awesome language.
Jim Fulton (@j1mfulton) and zc.buildout – we love using buildout to create Python application environments, but we started having our own ideas at some point.
Kenneth Reitz (@kennethreitz) and the Requests team – who built the awesome requests library. He and his team have brilliant documentation. When it came to finally document batou we used their works – quite literally and generously! Everything that is awesome about our documentation stems from them. Everything that sucks was caused by us (if you want to help us improve – you’re more than welcome!).
Jeff Forcier (@bitprophet) of Fabric and Paramiko fame – we’ve made huge advances when we switched from bash scripts to Fabric and kept refactoring until our Fabfile slowly turned into batou. We’ve used Paramiko before switching to execnet which gave us a nice way to slowly grow out of Fabric.
Holger Krekel (@hpk42) who gave us py.test and execnet – without those tools we would not have such a nice test suite and execnet is brilliant for lightweight remote Python processing.
The copyright holder for batou is:
Flying Circus Internet Operations GmbH Leipziger Str. 70/71 06108 Halle (Saale) GERMANY
The code of batou is licensed under the 2-clause BSD license:
Copyright (c) 2012-2014, gocept gmbh & co. kg Copyright (c) 2015-2021, Flying Circus Internet Operations GmbH All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. The views and conclusions contained in the software and documentation are those of the authors and should not be interpreted as representing official policies, either expressed or implied, of Flying Circus Internet Operations GmbH.