How to deploy a demo on AWS with awsfab and chef-solo

Get the sources

Clone the sources for devilry-deploy. You find them at our GitHub project page

Install awsfab

Install awsfab in a virtualenv in the awsfab-folder:

$ cd awsfab/
$ virtualenv --no-site-packages .
$ bin/easy_install zc.buildout
$ bin/buildout

Configure awsfab to use your AWS credentials

Create a keypair for the devilry demo

Go to, and select EC2 -> Key Pairs. Create a key named devilrydemo. Put the .pem file in ~/.ssh/. Make sure you set the permissions of your .pem-file so only you can access it:

$ chmod 600 ~/.ssh/devilrydemo.pem

Configure your access key

Go to, and select Your name (in the header) -> Security credentials. Under the Security credentials-heading you will find your Access Key ID and Secret Access Key. Create a file named (in the directory containing, and add the keys:

AUTH = {'aws_access_key_id': 'Access Key ID',
        'aws_secret_access_key': 'Secret Access Key'}

# If you want to put ``devilrydemo.pem`` another place than ~/.ssh/, set KEYPAIR_PATH
#KEYPAIR_PATH = ['/path/to/dir/containing/key']

See for more details.

Deploy with chef-solo and awsfab

Launch/create a new EC2 instance for the webserver

Launch an EC2 m1.small instance with ubuntu-server:

$ bin/awsfab ec2_launch_instance:devilrydemo0,ubuntu-SMALL

In this example, we name our instance devilrydemo0, this means that the Name-tag will be devilrydemo0. You can choose whatever name you like.

Install chef-solo on the instance

Install chef-solo on the instance. You only need to do this once for each instance. Make sure the name (after -E), matches the one you picked for ec2_launch_instance above:

$ bin/awsfab -E devilrydemo0 install_chefclient

Deploy the demo with chef-solo

With Chef, you always deploy a node. Each node is configured in a *.json-file in REPOROOT/chef/nodes/.

Deploy devilrydemo.json to devilrydemo0:

$ bin/awsfab -E devilrydemo0 chef_deploy:devilrydemo.json


To update the demo, simply repeat the chef_deploy-command.