Kitchen::Ec2: A Test Kitchen Driver for Amazon EC2
A Test Kitchen Driver for Amazon EC2.
This driver uses the fog gem to provision and destroy EC2 instances. Use Amazon's cloud for your infrastructure testing!
Requirements
There are no external system requirements for this driver. However you will need access to an AWS account.
Installation and Setup
Please read the Driver usage page for more details.
Configuration
availability_zone
Required The AWS availability zone to use.
The default is "us-east-1b"
.
aws_access_key_id
Required The AWS access key id to use.
The default is unset, or nil
.
aws_secret_access_key
Required The AWS secret access key to use.
The default is unset, or nil
.
aws_ssh_key_id
Required The EC2 SSH key id to use.
The default is unset, or nil
.
flavor_id
The EC2 instance type (also known as size) to use.
The default is "m1.small"
.
groups
An Array of EC security groups which will be applied to the instance.
The default is ["default"]
.
image_id
Required The EC2 AMI id to use.
The default is unset, or nil
.
port
The SSH port number to be used when communicating with the instance.
The default is 22
.
region
Required The AWS region to use.
The default is "us-east-1"
.
require_chef_omnibus
Determines whether or not a Chef Omnibus package will be installed. There are several different behaviors available:
true
- the latest release will be installed. Subsequent converges will skip re-installing if chef is present.latest
- the latest release will be installed. Subsequent converges will always re-install even if chef is present.<VERSION_STRING>
(ex:10.24.0
) - the desired version string will be passed the the install.sh script. Subsequent converges will skip if the installed version and the desired version match.false
ornil
- no chef is installed.
The default value is unset, or nil
.
ssh_key
Path to the private SSH key used to connect to the instance.
The default is unset, or nil
.
subnet_id
The EC2 subnet to use.
The default is unset, or nil
.
sudo
Whether or not to prefix remote system commands such as installing and
running Chef with sudo
.
The default is true
.
tags
The Hash of EC tag name/value pairs which will be applied to the instance.
The default is { "created-by" => "test-kitchen" }
.
username
The SSH username that will be used to communicate with the instance.
The default is "root"
.
Example
The following could be used in a .kitchen.yml
or in a .kitchen.local.yml
to override default configuration.
---
driver_plugin: ec2
driver_config:
aws_access_key_id: KAS...
aws_secret_access_key: 3UK...
aws_ssh_key_id: id_rsa-aws
ssh_key: /path/to/id_rsa-aws
region: us-east-1
availability_zone: us-east-1b
require_chef_omnibus: true
subnet_id: subnet-6d6...
platforms:
- name: ubuntu-12.04
driver_config:
image_id: ami-fd20ad94
username: ubuntu
- name: centos-6.3
driver_config:
image_id: ami-ef5ff086
username: ec2-user
suites:
# ...
Both .kitchen.yml
and .kitchen.local.yml
files are pre-processed through
ERB which can help to factor out secrets and credentials. For example:
---
driver_plugin: ec2
driver_config:
aws_access_key_id: <%= ENV['AWS_ACCESS_KEY_ID'] %>
aws_secret_access_key: <%= ENV['AWS_SECRET_ACCESS_KEY'] %>
aws_ssh_key_id: <%= ENV['AWS_SSH_KEY_ID'] %>
ssh_key: <%= File.expand_path('~/.ssh/id_rsa') %>
region: us-east-1
availability_zone: us-east-1b
require_chef_omnibus: true
platforms:
- name: ubuntu-12.04
driver_config:
image_id: ami-fd20ad94
username: ubuntu
- name: centos-6.3
driver_config:
image_id: ami-ef5ff086
username: ec2-user
suites:
# ...
Development
- Source hosted at GitHub
- Report issues/questions/feature requests on GitHub Issues
Pull requests are very welcome! Make sure your patches are well tested. Ideally create a topic branch for every separate change you make. For example:
- Fork the repo
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Added some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request
Authors
Created and maintained by Fletcher Nichol ([email protected])
License
Apache 2.0 (see LICENSE)