Instance and release management made easy
Project description
gonzo
=====
Instance and release management made easy
Manage instances running in *Amazon Web Services* or using *Openstack* using
a single consistent interface::
$ gonzo launch production-web-app
...
$ gonzo list
production-web-app-001 m1.large ACTIVE david 0d 0h 2m 23s
fullstack-database-006 m1.small ACTIVE fergus 7d 23h 45m 3s
staging-jenkins-slave-003 m1.large ACTIVE matthew 60d 4h 18m 40s
Easily target instances or groups of instances with ``fab`` commands
and manage your code deployments using included fabric tasks::
$ fab gonzo.group:production-ecommerce-web push_release rollforward
Configuration
-------------
`Setup your clouds <http://gonzo.readthedocs.org/en/latest/configure.html>`_
Command Line Interface
----------------------
Having setup multiple cloud environments and/or regions within, use the ``gonzo
config`` command to chose where you want to deploy servers or projects to::
$ gonzo config
cloud: None
region: None
$ gonzo config --cloud aws
cloud: aws
region: eu-west-1
$ gonzo config --region us-west-1
cloud: aws
region: us-west-1
Managing the instance lifecycle
--------------------------------
Having 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
production-sql-004 m1.small ACTIVE david 20d 20h 4m 23s
production-web-004 m1.small ACTIVE fergus 7d 23h 45m 3s
To add a new instance to the region, specifying the server type - having defined
server types, and their sizes in your config::
$ gonzo launch production-web
To get more info on the commands available::
$ gonzo --help
Using gonzo with fabric
------------------------
You can then use ``gonzo`` to set a target server (or group of servers) for
`fabric <http://fabfile.org>`_ commands.
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_command
Or run the command on a group of instances::
$ fab gonzo.group:production-web run_command
Fabric task library
-------------------
To use the gonzo library of fabric tasks, simply import the relevant task
modules for namespaced tasks into your fabfile::
from gonzo.tasks import apache
These can then be called using the standard fabric syntax::
$ fab gonzo.group:production-web apache.restart
Alternatively import the tasks directly::
from gonzo.tasks.apache import restart
These commands won't be namespaced::
$ fab gonzo.group:production-web restart
You 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 CloudInit
---------------------------
CloudInit 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 the ``DEFAULT_USER_DATA`` config 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-app
User 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 a ``USER_DATA_PARAMS`` cloud 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-params key=val[,key=val..]``::
# gonzo launch --user-data ~/.gonzo/cloudinit_web_app \
--user-data-params puppet_address=puppetmaster2.example.com \
production-web-app
TODO
----
* project based stuff
* project name [for ``/srv/project_name``] (git setting?)
* Document how to use for release control
Build status
------------
.. image:: https://secure.travis-ci.org/onefinestay/gonzo.png?branch=master
:target: http://travis-ci.org/onefinestay/gonzo
License
-------
Apache 2.0 - see LICENSE for details
More Docs
---------
`Full documentation on Read the Docs <http://gonzo.readthedocs.org/en/latest/>`_
=====
Instance and release management made easy
Manage instances running in *Amazon Web Services* or using *Openstack* using
a single consistent interface::
$ gonzo launch production-web-app
...
$ gonzo list
production-web-app-001 m1.large ACTIVE david 0d 0h 2m 23s
fullstack-database-006 m1.small ACTIVE fergus 7d 23h 45m 3s
staging-jenkins-slave-003 m1.large ACTIVE matthew 60d 4h 18m 40s
Easily target instances or groups of instances with ``fab`` commands
and manage your code deployments using included fabric tasks::
$ fab gonzo.group:production-ecommerce-web push_release rollforward
Configuration
-------------
`Setup your clouds <http://gonzo.readthedocs.org/en/latest/configure.html>`_
Command Line Interface
----------------------
Having setup multiple cloud environments and/or regions within, use the ``gonzo
config`` command to chose where you want to deploy servers or projects to::
$ gonzo config
cloud: None
region: None
$ gonzo config --cloud aws
cloud: aws
region: eu-west-1
$ gonzo config --region us-west-1
cloud: aws
region: us-west-1
Managing the instance lifecycle
--------------------------------
Having 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
production-sql-004 m1.small ACTIVE david 20d 20h 4m 23s
production-web-004 m1.small ACTIVE fergus 7d 23h 45m 3s
To add a new instance to the region, specifying the server type - having defined
server types, and their sizes in your config::
$ gonzo launch production-web
To get more info on the commands available::
$ gonzo --help
Using gonzo with fabric
------------------------
You can then use ``gonzo`` to set a target server (or group of servers) for
`fabric <http://fabfile.org>`_ commands.
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_command
Or run the command on a group of instances::
$ fab gonzo.group:production-web run_command
Fabric task library
-------------------
To use the gonzo library of fabric tasks, simply import the relevant task
modules for namespaced tasks into your fabfile::
from gonzo.tasks import apache
These can then be called using the standard fabric syntax::
$ fab gonzo.group:production-web apache.restart
Alternatively import the tasks directly::
from gonzo.tasks.apache import restart
These commands won't be namespaced::
$ fab gonzo.group:production-web restart
You 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 CloudInit
---------------------------
CloudInit 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 the ``DEFAULT_USER_DATA`` config 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-app
User 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 a ``USER_DATA_PARAMS`` cloud 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-params key=val[,key=val..]``::
# gonzo launch --user-data ~/.gonzo/cloudinit_web_app \
--user-data-params puppet_address=puppetmaster2.example.com \
production-web-app
TODO
----
* project based stuff
* project name [for ``/srv/project_name``] (git setting?)
* Document how to use for release control
Build status
------------
.. image:: https://secure.travis-ci.org/onefinestay/gonzo.png?branch=master
:target: http://travis-ci.org/onefinestay/gonzo
License
-------
Apache 2.0 - see LICENSE for details
More Docs
---------
`Full documentation on Read the Docs <http://gonzo.readthedocs.org/en/latest/>`_
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
gonzo-0.2.0.tar.gz
(22.1 kB
view details)
File details
Details for the file gonzo-0.2.0.tar.gz
.
File metadata
- Download URL: gonzo-0.2.0.tar.gz
- Upload date:
- Size: 22.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0fe26f04040c19e9795ebad991cc09a8a9af3d51b1986c564b69e1bd9cfde9f2 |
|
MD5 | 11dd90687ef52b7f8395d33e88a0c00c |
|
BLAKE2b-256 | 047a90d02ed6af2ec1917aecc1ba54ebe97da26d15435d8601ca9769e7433512 |