= Chef VPC Toolkit

Chef Virtual Private Cloud Toolkit

== Description

The Chef VPC Toolkit is a set of Rake tasks that provide a framework to help automate the creation and configuration of “identical” VPC server groups in the cloud. The Chef VPC Toolkit provides the ability to create “toolkit projects” that can be used by team members and continuous integration systems to spin up groups of servers for development and testing. Configuration information is stored in JSON and YAML formats which can be easily parsed, edited, and version controlled.

== Features

-Supports Rackspace Cloud Servers.

-Uses Cloud Servers VPC to create secure groups of servers in the public cloud.

-Supports Centos, Fedora, RHEL, and Ubuntu.

-Creates a local Chef Server within the server group.

-Installs and configures a Chef client on each node with the Chef Server.

-Automatically configures Chef Cookbooks, Databags, Roles, and Node attributes.

== Installation

Requires Ruby and Rubygems. The app was developed with Ruby 1.8.7.

The following gems are required:

	rake
	builder (2.1.2)
	json (> 1.4.3)

To install the gem:

	rake build
	gem install chef-vpc-toolkit

== Examples

Example commands:

	- Create a new server group, upload cookbooks, install chef
	on all the nodes, sync share data and cookbooks.

		$ rake create

	- List your currently running server groups.

		$ rake group:list

	- SSH into the current (most recently created) server group

		$ rake ssh

	- SSH into a server group with an ID of 3

		$ rake ssh GROUP_ID=3

	- Delete the server group with an ID of 3

		$ rake group:delete GROUP_ID=3

	- Rebuild/Re-Chef the 'db1' server in the most recently created server group

		$ rake rechef SERVER_NAME=db1

	- Connect to a group as a VPN client. Currently supports and requires
     Network Manager Openvpn, nmcli, and nm-applet (Linux only).

		$ rake vpn

	- Disconnect from group as a VPN client

		$ rake vpn:disconnect

== Bash Automation Script
The following is an example bash script to spin up a group and run commands via SSH. Useful for CI automation in Hudson, etc.

	#!/bin/bash

	chef-vpc-toolkit -v
	trap "rake group:delete" INT TERM EXIT # cleanup the group on exit

	rake create
	VPN_GW=$(rake group:show | grep "VPN gateway IP" | sed -e "s|VPN gateway IP: ||")
	ssh root@$VPN_GW bash <<-EOF_BASH
		# do stuff here
	EOF_BASH

== Author

Dan Prince <dan.prince@rackspace.com>

== License

See COPYING for license information.
Copyright (c) 2010, Rackspace US, Inc.