High level tools to manage an AWS infrastructure
Project description
AWSTOOLS is a Python package that provide modules and commands to manage an infrastructure on Amazon Web Services.
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
At the moment awstools supports:
-
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
-
ec2ssh: Connect to one or multiple instances in a handy way
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:
<specified by –config>
./awstools.cfg
~/.awstools.cfg
/etc/awstools.cfg
An application settings file is searched in this order:
specified by –settings
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 is the originator and main author.
Changelog for Awstools
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.