skip to navigation
skip to content

Not Logged In

awstools 0.3.7

High level tools to manage an AWS infrastructure

=====================================
 AWSTOOLS - high level tools for AWS
=====================================

AWSTOOLS is a Python package that provide modules and commands to manage an
infrastructure on `Amazon Web Services <http://aws.amazon.com>`_.

Awstools is driven by a set of conventions and choices to makes system
operations simple to the most. Awstools is mainly focused on managing multiple
isolated social/web/mobile architectures.


Main conventions and choices:

- Using one of the Amazon Web Service is better than a custom solution
- Operation system: Ubuntu LTS or newer
- Configuration system: `Puppet <http://puppetlabs.com>`_


At the moment awstools supports:

- `CloudFormation <http://aws.amazon.com/cloudformation>`_

   - **ApplicationSettings** (awstools.applications)
     Describe your application by declaring a set of *Pool* per *Environment*

   - **cfn**: List, Create, Update, Delete, Inspect
     Manage your AWS resources based on ApplicationSettings and cloudformation
     templates

- `EC2 <http://aws.amazon.com/ec2>`_

   - **ec2ssh**:
     Connect to one or multiple instances in a handy way

   - **awstools.fabric.populate_roledefs**:
     Populate Fabric roles with EC2 instances using the tags.
     fab -R App-Role cmd_run_on_all_app-role-*_instances



Installation
============

Python requirements:
 - argh
 - boto
 - PyYaml


Configuration
=============

::

   You must have a valid boto credentials provider to use the awstools.
   See the `Boto tutorial <http://docs.pythonboto.org/en/latest/boto_config_tut.html>`_.

- A **configuration file** is searched in this order:

   1. <specified by --config>
   2. ./awstools.cfg
   3. ~/.awstools.cfg
   4. /etc/awstools.cfg

- An application settings file is searched in this order:

   1. specified by --settings
   2. specified by awstools configuration file


Testing
=======

Run the test with nose

::

   pip install -r requirements-test.txt
   nosetests


Examples
========

Command ec2ssh
--------------

::

   $ ec2ssh MyInstanceByTagName
   Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.2.0-23-virtual x86_64)

   ubuntu@tb-java-stage:~$


   $ ec2ssh MyInstanceByTagName uptime
    19:14:03 up 182 days,  4:49,  0 users,  load average: 0.08, 0.06, 0.05


   $ ec2ssh App-Role-* uptime
   ----- Command: uptime
   ----- Instances(2): App-Role-development,App-Role-production
   Confirm? (Y/n)
   ----- i-a0b24444: ec2-12-12-12-12.compute-1.amazonaws.com  10.101.101.101
    19:21:32 up 52 days,  3:51,  0 users,  load average: 0.00, 0.01, 0.05
   ----- i-ce786666: ec2-23-23-23-23.compute-1.amazonaws.com  10.201.201.201
    19:21:32 up 182 days,  4:56,  0 users,  load average: 0.08, 0.04, 0.05
   ----- DONE


   $ ec2ssh i-a0b24444 uptime
    19:24:28 up 52 days,  3:54,  0 users,  load average: 0.00, 0.01, 0.05


   $ ec2ssh 10.101.101.101 uptime
    19:25:18 up 52 days,  3:55,  0 users,  load average: 0.00, 0.01, 0.05


   $ ec2ssh App1-*,App2-*,App3-Role-test uptime


Configuration
-------------

::

   [cfn]
   settings = ~/cloudformation/applications.yaml
   templatedir = ~/cloudformation


Applications Settings
---------------------

::

   Application: gmail
   ShortName: gm
   KeyName: google-secretkey
   live: True
   environments:
     production:
       storage:
         template: storage.js
         AvailabilityZones: us-east-1a,us-east-1b,us-east-1c
         WebServerCapacity: 6
         InstanceType: m1.xlarge
       frontweb:
         template: frontweb.js
         AvailabilityZones: us-east-1a,us-east-1b
         WebServerCapacity: 4
         InstanceType: m1.medium
     stage:
       storage:
         template: storage.js
         AvailabilityZones: us-east-1a,us-east-1b
         WebServerCapacity: 2
         InstanceType: m1.small
       frontweb:
         template: frontweb.js
         AvailabilityZones: us-east-1a,us-east-1b
         WebServerCapacity: 2
         InstanceType: m1.small
     test:
       frontweb:
         template: frontweb.js
         AvailabilityZones: us-east-1a,us-east-1b
         WebServerCapacity: 2

The application *gmail* has a production, a staging and a test environment.
An environment is defined by two pools: *storage* and *frontweb*.
However in test you mock the storage and don't need a *storage* pool.
All those settings will be available for the CloudFormation templates.



Contribute
==========

Want to contribute, report a but of request a feature ? The development goes on
at Ludia's BitBucket account:

- **Report bugs**: https://bitbucket.org/pior/awstools/issues
- **Fork the code**: https://bitbucket.org/pior/awstools
- **Download**: http://pypi.python.org/pypi/awstools


Credits
=======

* `Pior Bastida <pior@pbastida.net>`_ is the originator and main author.


Changelog for Awstools
======================


0.3.7 (2013-12-17)
------------------

- Fix wrong priority order when reading multiple configuration files


0.3.6 (2013-10-11)
------------------

- update author email
- cfnas: add subcommand metrics to control the ASG metrics collection


0.3.5 (2013-10-10)
------------------

- ec2ssh: add instance private hostname matching
- Move autoscale subcommands to a new cfnas command
- ec2ssh: add bash completion helpers
- Pylint


0.3.4 (2013-07-04)
------------------

- cfn batch-update: continue after a failure if user wants to


0.3.3 (2013-07-04)
------------------

- Add --force option to `cfn update` command
- Add a `cfn batch-update` command


0.3.2 (2013-06-11)
------------------

- Complete hgignore
- ec2ssh: enhance fallback when denying connection to multiple instances
- Fix wrong current_capacity displayed in autoscale update utility


0.3.1 (2013-03-13)
------------------

- fix *cfn setcapacity* setting 0 instead of the desired value


0.3 (2013-03-11)
----------------

- start using zest.releaser for versioning


0.2.3 (2013-02-01)
------------------

- display template description in cfn subcommands
- create subcommand "cfn activities"
 
File Type Py Version Uploaded on Size
awstools-0.3.7.zip (md5) Source 2013-12-17 37KB
  • Downloads (All Versions):
  • 92 downloads in the last day
  • 467 downloads in the last week
  • 2587 downloads in the last month