batou
=====

.. raw:: html

    <a href="https://bitbucket.org/gocept/batou" style="float:right;border-bottom:none">
      <img src="https://bitbucket.org/zgramana/bitbucket-ribbons/raw/988dffc5fbeb/png/bitbucket-ribbon-dark-gray.png" />
    </a>

.. rubric:: multi-(component | host | environment | platform) deployment

batou makes it easy to define and perform automated service deployments.  It is developed at `gocept <http://gocept.com>`_ and made available under the
2-clause BSD license.

The smallest service definition you could possibly make looks like this:

.. literalinclude:: ../../examples/tutorial-helloworld/components/hello/component.py
    :language: python

.. literalinclude:: ../../examples/tutorial-helloworld/environments/tutorial.cfg
    :language: ini

If you deploy this service it will look like this:

.. code-block:: bash

    $ bin/batou-local dev localhost
    Updating Hello > File(hello) > Presence(hello)
    Updating Hello > File(hello) > Content(hello)

Philosophy
----------

batou tries to combine the simplicity of SSH-automation (as found in Fabric) with
the elegance of model-driven, idempotent, and convergent systems (like Puppet).

batou wants to:

* deploy services -- fast and reliably
* describe services consisely
* work on multiple platforms (Linux, OS X)
* work hand-in-hand with systems configured by other parties
* make only few assumptions
* have few dependencies on the target systems for basic operation
* be useful for developers and admins

batou does *not* want to:

* provision VMs or configure operating systems
* add additional runtime complexity to services


.. note::

    batou is still young and undergoing major changes every now and then.
    However, all of the code is used in production projects on a daily basis.

Learn more
----------

.. toctree::
    :maxdepth: 1
    :glob:

    keyfeatures
    introduction
    requirements
    tutorials/index
    guide/index
    principles


Resources
---------

.. toctree::
    :maxdepth: 1

    support
    changes
    legal


Contribute
----------

We'd love if you want to contribute: whether by reporting bugs, sending us your
feedback, or by hacking on batou.

Here are the tools we use to develop batou:

* `batou redmine project <http://projects.gocept.com/projects/batou>`_
* `bitbucket repository <http://bitbucket.org/gocept/batou>`_ (pull requests welcome!)

