kitchen-cloudformation 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 82766a03521b8ae66cbd55c8595a99a6e6987251
4
+ data.tar.gz: 469a2c828e14cf0e2d594b9a9f952640fff54878
5
+ SHA512:
6
+ metadata.gz: 7e03b00da1ade35c0a48a8f20bc837684aba43551549ca24433e13e2530abb5ee5445b47bee1a03d7989fc7b7f041e38ca54b69c3a780b2dd081b5c757f2adbb
7
+ data.tar.gz: 2dfb3564d3325a4aaff8ce535ebcf17c7b7617ed446ca95f8175ec61e2a7767e47186c74077870d8e6a8eb88fa09b183f12e97dca4fdd4837a260a813ced0c90
data/CHANGELOG.md ADDED
@@ -0,0 +1,3 @@
1
+ ## 0.0.1 / 2015-05-28
2
+
3
+ * Initial Version
data/LICENSE ADDED
@@ -0,0 +1,12 @@
1
+
2
+ Licensed under the Apache License, Version 2.0 (the "License");
3
+ you may not use this file except in compliance with the License.
4
+ You may obtain a copy of the License at
5
+
6
+ http://www.apache.org/licenses/LICENSE-2.0
7
+
8
+ Unless required by applicable law or agreed to in writing, software
9
+ distributed under the License is distributed on an "AS IS" BASIS,
10
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
+ See the License for the specific language governing permissions and
12
+ limitations under the License.
data/README.md ADDED
@@ -0,0 +1,146 @@
1
+ # kitchen-cloudformation
2
+
3
+ [![Gem Version](https://badge.fury.io/rb/kitchen-cloudformation.png)](http://badge.fury.io/rb/kitchen-cloudformation)
4
+ [![Build Status](https://travis-ci.org/neillturner/kitchen-cloudformation.png)](https://travis-ci.org/neillturner/kitchen-cloudformation)
5
+
6
+ A Test Kitchen Driver for Amazon AWS CloudFormation.
7
+
8
+ This driver uses the [aws sdk gem][aws_sdk_gem] to create and delete Amazon AWS CloudFormation stacks to orchestrate your cloud resources for your infrastructure testing, dev or production setup.
9
+
10
+ It works best using AWS VPC where the servers have fixed IP addresses or in AWS Clasic using known Elastic IP Addresses.
11
+ This allow the IP address of each of the servers to be specified as a hostname in the suite definition (see example below).
12
+
13
+ So you can deploy and test say a Mongodb High Availability cluster by using cloud formation to create the servers
14
+ and then converge each of the servers in the cluster and run tests.
15
+
16
+ WARNING: This is a pre-release version. I'm sure the code does not handle all error conditions etc.
17
+
18
+ ## Requirements
19
+
20
+ There are **no** external system requirements for this driver. However you
21
+ will need access to an [AWS][aws_site] account.
22
+
23
+
24
+ ## Configuration Options
25
+
26
+ key | default value | Notes
27
+ ----|---------------|--------
28
+ region|ENV["AWS_REGION"] or "us-east-1"|Aws Region
29
+ shared_credentials_profile| nil|Specify Credentials Using a Profile Name
30
+ aws_access_key_id|nil|Deprecated see Authenticating with AWS
31
+ aws_secret_access_key|nil|Deprecated see Authenticating with AWS
32
+ aws_session_token|nil|Deprecated see Authenticating with AWS
33
+ ssl_cert_file| ENV["SSL_CERT_FILE"]|SSL Certificate required on Windows platforms
34
+ stack_name ||Name of the Cloud Formation Stack to create
35
+ template_file||File containing the CloudFormation template to run
36
+ template_url||URL of the file containing the CloudFormation template to run
37
+ parameters|{}|Hash of parameters {key: value} to apply to the templates
38
+ disable_rollback|false|If the template gets an error don't rollback changes
39
+ timeout_in_minutes|0|Timeout if the stack is not created in the time
40
+
41
+ ## Authenticating with AWS
42
+
43
+ There are 3 ways you can authenticate against AWS, and we will try them in the
44
+ following order:
45
+
46
+ 1. You can specify the access key and access secret (and optionally the session
47
+ token) through config. See the `aws_access_key_id` and `aws_secret_access_key`
48
+ config sections below to see how to specify these in your .kitchen.yml or
49
+ through environment variables. If you would like to specify your session token
50
+ use the environment variable `AWS_SESSION_TOKEN`.
51
+ 1. The shared credentials ini file at `~/.aws/credentials`. You can specify
52
+ multiple profiles in this file and select one with the `AWS_PROFILE`
53
+ environment variable or the `shared_credentials_profile` driver config. Read
54
+ [this][credentials_docs] for more information.
55
+ 1. From an instance profile when running on EC2. This accesses the local
56
+ metadata service to discover the local instance's IAM instance profile.
57
+
58
+ This precedence order is taken from http://docs.aws.amazon.com/sdkforruby/api/index.html#Configuration
59
+
60
+ ```
61
+ In summary it searches the following locations for credentials:
62
+
63
+ ENV['AWS_ACCESS_KEY_ID'] and ENV['AWS_SECRET_ACCESS_KEY']
64
+ The shared credentials ini file at ~/.aws/credentials (more information)
65
+ From an instance profile when running on EC2
66
+
67
+ and it searches the following locations for a region:
68
+
69
+ ENV['AWS_REGION']
70
+ ```
71
+
72
+
73
+ The first method attempted that works will be used. IE, if you want to auth
74
+ using the instance profile, you must not set any of the access key configs
75
+ or environment variables, and you must not specify a `~/.aws/credentials`
76
+ file.
77
+
78
+ Because the Test Kitchen test should be checked into source control and ran
79
+ through CI we no longer recommend storing the AWS credentials in the
80
+ `.kitchen.yml` file. Instead, specify them as environment variables or in the
81
+ `~/.aws/credentials` file.
82
+
83
+ ## SSL Certificate File Issues
84
+
85
+ On windows you can get errors `SSLv3 read server certificate B: certificate verify failed`
86
+ as per https://github.com/aws/aws-sdk-core-ruby/issues/93 .
87
+
88
+ To overcome this problem set the parameter `ssl_cert_file` or the environment variable `SSL_CERT_FILE`
89
+ to a a SSL CA bundle.
90
+
91
+ A file ca-bundle.crt is supplied inside this gem for this purpose so you can set it to something like:
92
+ `<RubyHome>/lib/ruby/gems/2.1.0/gems/kitchen-cloudformation-0.0.1/ca-bundle.crt`
93
+
94
+
95
+ ## Example
96
+
97
+ The following could be used in a `.kitchen.yml` or in a `.kitchen.local.yml`
98
+ to override default configuration.
99
+
100
+ ```yaml
101
+ ---
102
+ driver:
103
+ name: cloudformation
104
+ stack_name: mystack
105
+ template_file: /test/example.template
106
+ parameters:
107
+ - base_package: wget
108
+
109
+ provisioner:
110
+ name: chef_zero
111
+
112
+ platforms:
113
+ - name: centos-6.4
114
+ driver: cloud_formation
115
+
116
+ suites:
117
+ - name: default
118
+ driver_config:
119
+ ssh_key: /mykeys/mykey.pem
120
+ username: root
121
+ hostname: '10.53.191.70'
122
+ ```
123
+
124
+ ## <a name="license"></a> License
125
+
126
+ Apache 2.0 (see [LICENSE][license])
127
+
128
+
129
+ [author]: https://github.com/neillturner
130
+ [issues]: https://github.com/neillturner/kitchen-cloudformation/issues
131
+ [license]: https://github.com/neillturner/kitchen-cloudformation/blob/master/LICENSE
132
+ [repo]: https://github.com/neillturner/kitchen-cloudformation
133
+ [driver_usage]: http://docs.kitchen-ci.org/drivers/usage
134
+ [chef_omnibus_dl]: http://www.getchef.com/chef/install/
135
+
136
+ [aws_site]: http://aws.amazon.com/
137
+ [credentials_docs]: http://blogs.aws.amazon.com/security/post/Tx3D6U6WSFGOK2H/A-New-and-Standardized-Way-to-Manage-Credentials-in-the-AWS-SDKs
138
+ [aws_sdk_gem]: http://docs.aws.amazon.com/sdkforruby/api/index.html
139
+ [cloud_formation_docs]: http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/Welcome.html
140
+
141
+ ## TO DO
142
+
143
+ -More testing and error handling.
144
+
145
+ -implement all the options of cloud formation.
146
+