awspec
RSpec tests for your AWS resources.
Installation
Add this line to your application's Gemfile:
gem 'awspec'
And then execute:
$ bundle
Or install it yourself as:
$ gem install awspec
Getting Started
1. Generate awspec init files
$ awspec init
2. Set AWS credentials
2-1. Use Shared Credentials
$ aws configure
...
2-2. Use spec/secrets.yml
$ cat <<EOF > spec/secrets.yml
region: ap-northeast-1
aws_access_key_id: XXXXXXXXXXXXXXXXXXXX
aws_secret_access_key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
EOF
3. Write spec/*_spec.rb
describe ec2('my-ec2-tag-name') do
it { should be_running }
its(:instance_id) { should eq 'i-ec12345a' }
its(:image_id) { should eq 'ami-abc12def' }
its(:public_ip_address) { should eq '123.0.456.789' }
it { should have_security_group('my-security-group-name') }
it { should belong_to_vpc('my-vpc') }
it { should belong_to_subnet('subnet-1234a567') }
it { should have_eip('123.0.456.789') }
it { should be_disabled_api_termination }
end
4. Run tests
$ bundle exec rake spec
Advanced Tips: Spec generate command
Generate spec from AWS resources already exists.
$ awspec generate ec2 vpc-ab123cde >> spec/ec2_spec.rb
Advanced Tips: Use Shared Credentials (~/.aws/config ~/.aws/credentials)
$ awspec generate ec2 vpc-ab123cde --profile mycreds
$ export AWS_PROFILE=mycreds; bundle exec rake spec
Support AWS Resources
- [x] EC2 (
ec2
) - [x] RDS (
rds
)- [x] RDS DB Parameter Group (
rds_db_parameter_group
)
- [x] RDS DB Parameter Group (
- [x] Security Group (
security_group
) - [x] VPC (
vpc
) - [x] S3 (
s3
) - Route53
- [x] Route53 Hosted Zone (
route53_hosted_zone
)
- [x] Route53 Hosted Zone (
- AutoScaling
- [x] AutoScaling Group (
autoscaling_group
)
- [x] AutoScaling Group (
- [x] Subnet (
subnet
) - [x] RouteTable (
route_table
) - [x] EBS Volume (
ebs
) - [x] ELB (
elb
) - [x] Lambda (
lambda
) - IAM
- [x] IAM User (
iam_user
) - [x] IAM Group (
iam_group
) - [x] IAM Role (
iam_role
) - [x] IAM Policy (
iam_policy
)
- [x] IAM User (
- [x] ElastiCache (
elasticache
)- [x] ElastiCache Cache Parameter Group (
elasticache_cache_parameter_group
)
- [x] ElastiCache Cache Parameter Group (
- CloudWatch
- [x] CloudWatch Alarm (
cloudwatch_alarm
)
- [x] CloudWatch Alarm (
- SES
- [x] SES Identity (
ses_identity
)
- [x] SES Identity (
- [x] NetworkAcl (
network_acl
)
Resource Types more infomation here
References
awspec is inspired by Serverspec.
- Original idea (code / architecture) -> Serverspec
AWS + Serverspec
original concept -> https://github.com/marcy-terui/awspec- Serverspec book