Version 7 (modified by 13 years ago) (diff) | ,
---|
Contents
Orchestrates AWS cloud resources using boto and pychef
Notice: This plugin is unmaintained and available for adoption.
WARNING! This plugin is in alpha.
I recommend you not use this plugin yet on production instances. Although you likely won't lose ec2 instances or chef data, it's still quite immature. It would be best to try out on dev instances to help test the plugin and generate ideas for new features.
- robguttman, 2011 Jan 28
Description
This plugin is meant to fill the coordination gap between AWS and Chef, especially:
- Launch an ec2 instance and apply one or more chef roles
- Terminate ec2 instances and delete its chef node
There are additional features and quite possibly more to come, but my intention is to keep the scope down to what's needed to orchestrate between AWS and Chef (and not re-implement either the AWS Management Console or the Chef Server webui).
This plugin relies heavily upon boto and pychef. Special thanks to coderanger for his responsiveness on pychef.
Configuration
- Install the plugin (after downloading and unzipping):
cd cloudplugin/0.12 sudo python setup.py bdist_egg sudo cp dist/TracCloud*.egg /your/trac/location/plugins/
See TracPlugins for more installation details and options. You'll likely need to restart Trac's web server after installation.
- Enable the plugin in
trac.ini
:[components] cloud.* = enabled
You can alternatively use the Trac Web Admin GUI to enable any or all rules.
- Configure the main
trac.ini
section:[cloud] label = Cloud aws_key = <aws-access-key> aws_secret = <aws-secret-key> aws_keypair = <ec2-key-pair> chef_instancedata_file = /path/to/instance-data.json
The label
option above is the name to be used in the top navigation:
AWS credentials
The aws_*
options are your AWS credentials and the key pair used by your ec2 instances.
Chef configuration
The chef_instancedata_file
option is the absolute path to the ec2 instance/user data generated by chef's knife command:
% knife ec2 instance data role[<desired-role>] > /path/to/instance-data.json
The plugin will use this file for the instance data replacing the role information as needed. As the file contains the validation.pem
data, be sure to secure it accordingly. In cases where you need different credentials and/or chefserver url, you can use the following option to specify a base directory which must contain the typical .chef
directory and its contents plus (optionally) a validation.pem
file within the .chef
directory:
[cloud] .. chef_base_path = /path/to/dir/that/contains/.chef
It's currently assumed that you're using one of Opscode's AMIs or a homegrown AMI derived from it. These AMIs use the instance's id as the node name. However, you may have recipes which for one reason or another change the node's name after the first chef-client run. If so, you need to specify the boto field that maps to the final node name using this config option:
[cloud] .. boto_field_node_name = private_dns_name
Adding this option will cause the plugin to create a new node of that name upon launching a new ec2 instance and once it checks in will remove the original node. Otherwise you'll have two chef nodes for the same ec2 instance - something you likely don't want. Yeah, this is a bit complicated - an area ripe for improvement.
The plugin is intended to support multiple AWS resource types in addition to instances as needed for orchestration with chef. You specify the default resource to view using this config option:
[cloud] .. default_resource = instance
Each AWS resource type such as instance
above is configured independently. See the examples section below for how to specify these resources.
Bugs/Feature Requests
Existing bugs and feature requests for CloudPlugin are here.
If you have any issues, create a new ticket.
Download
Download the zipped source from [download:cloudplugin here].
Source
You can check out CloudPlugin from here using Subversion, or browse the source with Trac.
Example
trac.ini config ...
[cloud] ...
Recent Changes
- 14004 by rjollos on 2014-07-12 18:27:48
-
Correct
license
keyword argument insetup.py
. Refs #11832.
- 13996 by rjollos on 2014-06-25 00:56:32
-
Fixed author in COPYING file. Refs #11832.
- 13994 by rjollos on 2014-06-25 00:51:36
-
Changed to 3-Clause BSD license with permission of author. Refs #11832.
(more)
Author/Contributors
Author: robguttman
Maintainer: robguttman
Contributors:
Attachments (4)
- nav.png (2.2 KB) - added by 13 years ago.
- instance-new.png (28.5 KB) - added by 13 years ago.
- progress.png (15.6 KB) - added by 13 years ago.
- instance-grid.png (118.5 KB) - added by 13 years ago.
Download all attachments as: .zip