.. Do not edit this file. It is generated from docs/index.rst. See docs/utils.py

================================
nuka - a provisioning tool
================================

.. image::  https://img.shields.io/pypi/l/nuka.svg
  :target: https://pypi.python.org/pypi/nuka

.. image::  https://img.shields.io/pypi/pyversions/nuka.svg
  :target: https://pypi.python.org/pypi/nuka

.. image:: https://travis-ci.org/bearstech/nuka.png?branch=master
  :target: https://travis-ci.org/bearstech/nuka

Because ops can dev.

nuka is a provisioning tool focused on performance. It massively uses Asyncio and SSH.
It is compatible with docker vagrant and apache-libcloud.


Full documentation is available at http://doc.bearstech.com/nuka

Quickstart
==========

Install nuka (See `Installation <https://doc.bearstech.com/nuka/install.html>`_
for detailled steps)::

    $ pip install "nuka[full]"

Then start a script:


::

    #!/usr/bin/env python3.5
    import nuka
    from nuka.hosts import DockerContainer
    from nuka.tasks import (shell, file)
    
    # setup a docker container using the default image
    host = DockerContainer('mycontainer')
    
    
    async def do_something(host):
    
        # we just echoing something using the shell.command task
        await shell.command(['echo', 'it works'], host=host)
    
        # if no host is provided, then a var named `host` is searched
        # from the stack. Mean that this will works to
        await shell.command(['echo', 'it works too'])
    
    
    async def do_something_else(host):
    
        # log /etc/resolv.conf content
        res = await file.cat('/etc/resolv.conf')
        host.log.info(res.content)
    
    
    # those coroutines will run in parallell
    nuka.run(
        do_something(host),
        do_something_else(host),
    )

Run it using::

    $ chmod +x your_file.py
    $ ./your_file.py -v

The first run will be slow because we have to pull the docker image.
The next run will take approximately 1s.

Get some help::

    $ ./your_file.py -h

Look at the generated gantt of your deployement::

    $ firefox .nuka/reports/your_file_gantt.html

You'll get a dynamic report like this screenshot:

.. image:: https://doc.bearstech.com/nuka/_images/gantt.png
   :align: center

