Install
$ apt-get install -y libxslt-dev libxml2-dev $ gem install knife-ec2 $ gem install net-ssh-multi
Get Your AWS Keys
Login to your AWS account at aws.amazon.com
Go to My Account/Console -> Security Credentials
Scroll Down to The Certificates and Secret Keys Menu and generate your new access keys as needed
Generate the Keypair associated with your new ec2 instances ( for ssh )
Create a new keypair. This should result in a pem file output to you. If you lose this file you will not be able to access any ec2 instances associated with it unless you have alternate accounts you can login with.
Configure
$ cd ~/.chef $ vi knife.rb
Append the following to your knife.rb
### AWS Configuration ### ## The below lines allow you to use the ec2 api knife[:aws_access_key_id] ='< AWS ACCESS KEY GOES HERE >' knife[:aws_secret_access_key] ='< AWS SECRET KEY GOES HERE >' ## The below allow you to ssh into new ec2 instance that are associated with the keypair below ## You can alternately choose to specify the username and key location on the knife command line # knife[:aws_ssh_key_id] ='james-aws' # knife[:identity_file] ="/home/james/.ssh/james-aws.pem"
Test knife-ec2 command
bootstrap file squeeze.rb can be grabbed from here:
https://github.com/cookingclouds/bootstrap/
$ knife ec2 server list $ knife ec2 server create -I ami-e00df089 -f t1.micro -Z us-east-1a -G "default_security" -k james-aws --ssh-key /home/james/.ssh/james-aws.pem --template-file /home/james/bootstrap/squeeze.rb
knife-ec2 command reference list
knife ec2 server create --help knife ec2 server create (options) -Z, --availability-zone ZONE The Availability Zone -A, --aws-access-key-id KEY Your AWS Access Key ID -K SECRET, Your AWS API Secret Access Key --aws-secret-access-key --user-data USER_DATA_FILE The EC2 User Data file to provision the instance with --bootstrap-version VERSION The version of Chef to install -N, --node-name NAME The Chef node name for your new node --server-url URL Chef Server URL -k, --key KEY API Client Key --color Use colored output -c, --config CONFIG The configuration file to use --defaults Accept default values for all questions -d, --distro DISTRO Bootstrap a distro using a template --ebs-no-delete-on-term Do not delete EBS volumn on instance termination --ebs-size SIZE The size of the EBS volume in GB, for EBS-backed instances -e, --editor EDITOR Set the editor to use for interactive commands -E, --environment ENVIRONMENT Set the Chef environment -f, --flavor FLAVOR The flavor of server (m1.small, m1.medium, etc) -F, --format FORMAT Which format to use for output -i IDENTITY_FILE, The SSH identity file used for authentication --identity-file -I, --image IMAGE The AMI for the server --no-color Don't use colors in the output -n, --no-editor Do not open EDITOR, just accept the data as is --no-host-key-verify Disable host key verification -u, --user USER API Client Username --prerelease Install the pre-release chef gems --print-after Show the data after a destructive operation --region REGION Your AWS region -r, --run-list RUN_LIST Comma separated list of roles/recipes to apply -G, --groups X,Y,Z The security groups for this server -S, --ssh-key KEY The AWS SSH key id -P, --ssh-password PASSWORD The ssh password -x, --ssh-user USERNAME The ssh username -s, --subnet SUBNET-ID create node in this Virtual Private Cloud Subnet ID (implies VPC mode) --template-file TEMPLATE Full path to location of template to use -V, --verbose More verbose output. Use twice for max verbosity -v, --version Show chef version -y, --yes Say yes to all prompts for confirmation -h, --help Show this message