High level tools to manage an AWS infrastructure
Project description
=====================================
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.10 (2015-04-30)
-------------------
- Nothing changed yet.
0.3.9 (2015-04-30)
------------------
- Nothing changed yet.
0.3.8 (2015-04-23)
------------------
- Nothing changed yet.
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"
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.10 (2015-04-30)
-------------------
- Nothing changed yet.
0.3.9 (2015-04-30)
------------------
- Nothing changed yet.
0.3.8 (2015-04-23)
------------------
- Nothing changed yet.
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"
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
awstools-0.3.10.tar.gz
(20.4 kB
view hashes)