nuka - a provisioning tool

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.


Install nuka (See Installation 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'/etc/resolv.conf')

# those coroutines will run in parallell

Run it using:

$ chmod +x
$ ./ -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:

$ ./ -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:

Indices and tables