Package: gonzo
Instance and release management made easyManage instances running inAmazon Web Servicesor usingOpenstackusing
a single consistent interface:$ gonzo launch production-web-app
...
$ gonzo list

name                               type        status    owner          uptime             location

production-web-app-001             m1.small    RUNNING   tom            0d 0h 1m 18s       eu-west-1b
production-web-db-001              m3.medium   RUNNING   amit           27d 1h 8m 13s      eu-west-1aEasily target instances or groups of instances withfabcommands
and manage your code deployments using included fabric tasks:$ fab gonzo.group:production-ecommerce-web push_release rollforwardConfigurationSetup your cloudsCommand Line InterfaceHaving setup multiple cloud environments and/or regions within, use thegonzo configcommand to chose where you want to deploy servers or projects to:$ gonzo config
cloud: None
region: None
$ gonzo config --cloud aws
cloud: aws
region: us-west-1
$ gonzo config --region eu-west-1
cloud: aws
region: eu-west-1Managing the instance lifecycleHaving chosen the cloud and region you want to work within you can issue gonzo
commands to control the spinning up, monitoring and termination of instances
within.To see a list of all running instance in the region:$ gonzo list
name                               type        status    owner          uptime             location

production-web-app-001             m1.small    RUNNING   tom            408d 0h 42m 18s    eu-west-1a
production-web-app-002             m3.medium   RUNNING   amit           27d 1h 8m 13s      eu-west-1b
production-web-db-011              m3.medium   RUNNING   amit           160d 2h 33m 18s    eu-west-1cTo add a new instance to the region, specifying the server type - having defined
server types, and their sizes in your config:$ gonzo launch production-webTo get more info on the commands available:$ gonzo --helpUsing gonzo with fabricYou can then usegonzoto set a target server (or group of servers) forfabriccommands.Import gonzo in your fabfile to extend fab with gonzo functionality:$ cat fabfile.py

from gonzo.tasks import gonzo
__all__ = ['gonzo']You can then run a command on a single instance, specifying it through gonzo:$ fab gonzo.instance:production-web-003 run_commandOr run the command on a group of instances:$ fab gonzo.group:production-web run_commandFabric task libraryTo use the gonzo library of fabric tasks, simply import the relevant task
modules for namespaced tasks into your fabfile:from gonzo.tasks import apacheThese can then be called using the standard fabric syntax:$ fab gonzo.group:production-web apache.restartAlternatively import the tasks directly:from gonzo.tasks.apache import restartThese commands won’t be namespaced:$ fab gonzo.group:production-web restartYou can extend the functionality by patching your own commands into the gonzo
namespaces to provide a clean CLI:# ~/apache_maintenance_mode.py
from fabric.api import task, sudo
from gonzo.tasks import apache

def maintenance_mode(off=False):
    """ Set server into maintenance mode.
    """

    if off:
        sudo("a2ensite onefinestay && a2dissite 00maintenance")
    else:
        sudo("a2ensite 00maintenance && a2dissite onefinestay")

apache.maintenance_mode = task(maintenance_mode)Using Gonzo With CloudInitCloudInit can be used to personalise the instances you launch. The user data
scripts passed to new instances for CloudInit to process can be specified for
each cloud by using theDEFAULT_USER_DATAconfig item in config.py:CLOUDS = {
    'cloudname': {

        ...
        'DEFAULT_USER_DATA': 'http://example.com/my-cloudinit-config.txt',
        ...Additionally, user data scripts can be specified per instance by using the
launch argument--user-data<file | url>:# gonzo launch --user-data ~/.gonzo/cloudinit_web_app production-web-appUser data scripts can be specified as a file path or URL.Before user data scripts are passed to new instances, they’re first rendered as
a template, allowing them to be parameterised. By default a few are already
available, such as hostname, domain and fqdn. These can be supplemented by
defining aUSER_DATA_PARAMScloud config dictionary:CLOUDS = {
    'cloudname': {

        ...
        'DEFAULT_USER_DATA': 'http://example.com/my-cloudinit-config.txt',
        'USER_DATA_PARAMS': {
            'puppet_address': 'puppetmaster.example.com',
        }
        ...Again, these parameters can also be supplemented or overridden at launch time
by using the command line argument--user-data-paramskey=val[,key=val..]:# gonzo launch --user-data ~/.gonzo/cloudinit_web_app \
    --user-data-params puppet_address=puppetmaster2.example.com \
    production-web-appTODOproject based stuffproject name [for/srv/project_name] (git setting?)Document how to use for release controlBuild statusLicenseApache 2.0 - see LICENSE for detailsMore DocsFull documentation on Read the Docs