kitchen-cloudformation 1.0.3 → 1.1.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e3ccb1075f10d85580ebe04b444a9eb6c19b38ff
4
- data.tar.gz: 37820bbfae06fa69e88f76e9852cc49d49a68c0a
3
+ metadata.gz: b8b6413186cf620aa770f3edf0a0cd0e43423a69
4
+ data.tar.gz: a796500599de24d644660dcabfde361374e85335
5
5
  SHA512:
6
- metadata.gz: 1aad3de220fdd5c8bcc7fa2405051f25351f4fb267408a2c879cadf15272f5724e19f39c2f141b85d2268008dffa07b65ece93d8ac37e4414e6edad48a62d507
7
- data.tar.gz: ac67d565aa1ea283ad57c02c072c968db464bbbb26ca57fc42dddd75473cfd1d69837f59a6b8ff6f72b85283a98630b3cd6c73d9d13c0124c89f779b593a84f5
6
+ metadata.gz: 510c8df116dd61765534720551462e496e465ca097c07aacfd353c6524b202dc5db0bb919502166855dd6295d2fe31fe18f54195493bdbb09c964edf7efd8b58
7
+ data.tar.gz: 25581e9e976e8cd093da2ead699f8a7e038bea8ca5397d4b90a40caa94fdf8620fd786f051b67b6f40906d56726905651b70c82a45979682cc325ca85ae3a436
data/README.md CHANGED
@@ -8,12 +8,12 @@ A Test Kitchen Driver for Amazon AWS Cloudformation.
8
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
9
 
10
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).
11
+ This allow the IP address of each of the servers to be specified as a hostname in the converge step.
12
12
 
13
13
  So you can deploy and test say a Mongodb High Availability cluster by using cloud formation to create the servers
14
14
  and then converge each of the servers in the cluster and run tests.
15
15
 
16
- WARNING: This is a pre-release version. I'm sure the code does not handle all error conditions etc.
16
+ This can be used with [kitchen-verifier-awspec](https://github.com/neillturner/kitchen-verifier-awspec) to do verification of AWS infrastructure.
17
17
 
18
18
  ## Requirements
19
19
 
@@ -25,19 +25,25 @@ will need access to an [AWS][aws_site] account.
25
25
 
26
26
  key | default value | Notes
27
27
  ----|---------------|--------
28
- region|ENV["AWS_REGION"] or "us-east-1"|Aws Region
28
+ capabilities||Array of capabilities that must be specified before creating or updating certain stacks accepts CAPABILITY_IAM, CAPABILITY_NAMED_IAM
29
+ disable_rollback||If the template gets an error don't rollback changes. true/false. default false.
30
+ notification_arns| [] |The Simple Notification Service (SNS) topic ARNs to publish stack related events. Array of Strings.
31
+ on_failure||Determines what action will be taken if stack creation fails. accepts DO_NOTHING, ROLLBACK, DELETE. You can specify either on_failure or disable_rollback, but not both.
32
+ parameters|{}|Hash of parameters {key: value} to apply to the templates
33
+ resource_types| [] |The template resource types that you have permissions to work with. Array of Strings.
34
+ role_arn||The Amazon Resource Name (ARN) of an AWS Identity and Access Management (IAM) role that AWS CloudFormation assumes to create the stack.
29
35
  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
36
  ssl_cert_file| ENV["SSL_CERT_FILE"]|SSL Certificate required on Windows platforms
34
37
  stack_name ||Name of the Cloud Formation Stack to create
38
+ stack_policy_body||Structure containing the stack policy body.
39
+ stack_policy_url||Location of a file containing the stack policy.
40
+ tags|{}|Hash of tags for stack TagKey: TagValue
35
41
  template_file||File containing the Cloudformation template to run
36
42
  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
43
  timeout_in_minutes|0|Timeout if the stack is not created in the time
40
44
 
45
+ See http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_CreateStack.html for parameter details.
46
+
41
47
  ## Authenticating with AWS
42
48
 
43
49
  There are 3 ways you can authenticate against AWS, and we will try them in the
@@ -61,7 +67,7 @@ This precedence order is taken from http://docs.aws.amazon.com/sdkforruby/api/in
61
67
  In summary it searches the following locations for credentials:
62
68
 
63
69
  ENV['AWS_ACCESS_KEY_ID'] and ENV['AWS_SECRET_ACCESS_KEY']
64
- The shared credentials ini file at ~/.aws/credentials (more information)
70
+ The shared credentials ini file at ~/.aws/credentials
65
71
  From an instance profile when running on EC2
66
72
 
67
73
  and it searches the following locations for a region:
@@ -103,7 +109,7 @@ driver:
103
109
  stack_name: mystack
104
110
  template_file: /test/example.template
105
111
  parameters:
106
- - base_package: wget
112
+ base_package: wget
107
113
 
108
114
  provisioner:
109
115
  name: chef_zero
@@ -120,8 +126,6 @@ suites:
120
126
  hostname: '10.53.191.70'
121
127
  ```
122
128
 
123
- ## <a name="license"></a> License
124
-
125
129
  Apache 2.0 (see [LICENSE][license])
126
130
 
127
131
 
@@ -143,8 +147,4 @@ Apache 2.0 (see [LICENSE][license])
143
147
 
144
148
  -implement all the options of cloud formation.
145
149
 
146
- -We also need plugins for:
147
- OpenStack Heat
148
- Azure Resource Manager
149
- Google Cloud Deployment Manager
150
- but i'm not aware of any ruby sdks for these yet.
150
+
@@ -1,4 +1,3 @@
1
- # -*- encoding: utf-8 -*-
2
1
  lib = File.expand_path('../lib', __FILE__)
3
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
3
  require 'kitchen/driver/cloudformation_version.rb'
@@ -1,4 +1,3 @@
1
- # -*- encoding: utf-8 -*-
2
1
  #
3
2
  #
4
3
  # Licensed under the Apache License, Version 2.0 (the 'License');
@@ -1,4 +1,3 @@
1
- # -*- encoding: utf-8 -*-
2
1
  #
3
2
  #
4
3
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -39,13 +38,23 @@ module Kitchen
39
38
  if config[:template_file]
40
39
  s[:template_body] = File.open(config[:template_file], 'rb') { |file| file.read }
41
40
  end
42
- s[:capabilities] = config[:capabilities] if !config[:capabilities].nil? && (config[:capabilities].is_a? Array)
41
+ s[:capabilities] = config[:capabilities] if !config[:capabilities].nil? && (config[:capabilities].is_a? Array) && !config[:capabilities].empty?
43
42
  s[:timeout_in_minutes] = config[:timeout_in_minutes] if !config[:timeout_in_minutes].nil? && config[:timeout_in_minutes] > 0
44
43
  s[:disable_rollback] = config[:disable_rollback] if !config[:disable_rollback].nil? && config[:disable_rollback] == true || config[:disable_rollback] == false
45
44
  s[:parameters] = []
46
45
  config[:parameters].each do |k, v|
47
46
  s[:parameters].push(parameter_key: k.to_s, parameter_value: v.to_s)
48
47
  end
48
+ s[:notification_arns] = config[:notification_arns] if !config[:notification_arns].nil? && (config[:notification_arns].is_a? Array) && !config[:notification_arns].empty?
49
+ s[:resource_types] = config[:resource_types] if !config[:resource_types].nil? && (config[:resource_types].is_a? Array) && !config[:resource_types].empty?
50
+ s[:role_arn] = config[:role_arn] unless config[:role_arn].nil?
51
+ s[:on_failure] = config[:on_failure] unless config[:on_failure].nil? # accepts DO_NOTHING, ROLLBACK, DELETE
52
+ s[:stack_policy_body] = config[:stack_policy_body] unless config[:stack_policy_body].nil?
53
+ s[:stack_policy_url] = config[:stack_policy_url] unless config[:stack_policy_url].nil?
54
+ s[:tags] = []
55
+ config[:tags].each do |k, v|
56
+ s[:tags].push(key: k.to_s, value: v.to_s)
57
+ end
49
58
  s
50
59
  end
51
60
  end
@@ -1,4 +1,3 @@
1
- # -*- encoding: utf-8 -*-
2
1
  #
3
2
  # Licensed under the Apache License, Version 2.0 (the "License");
4
3
  # you may not use this file except in compliance with the License.
@@ -31,24 +30,26 @@ module Kitchen
31
30
 
32
31
  plugin_version Kitchen::Driver::CLOUDFORMATION_VERSION
33
32
 
34
- default_config :region, ENV['AWS_REGION'] || 'us-east-1'
35
33
  default_config :shared_credentials_profile, nil
36
- default_config :aws_access_key_id, nil
37
- default_config :aws_secret_access_key, nil
38
- default_config :aws_session_token, nil
39
34
  default_config :ssl_cert_file, ENV['SSL_CERT_FILE']
40
35
  default_config :stack_name, nil
41
36
  default_config :template_file, nil
42
37
  default_config :capabilities, nil
43
38
  default_config :parameters, {}
44
- default_config :disable_rollback, false
39
+ default_config :disable_rollback, nil
45
40
  default_config :timeout_in_minutes, 0
46
41
  default_config :parameters, {}
47
42
 
48
43
  default_config :ssh_key, nil
49
44
  default_config :username, 'root'
50
45
  default_config :hostname, nil
51
- # default_config :interface, nil
46
+ default_config :notification_arns, []
47
+ default_config :resource_types, []
48
+ default_config :role_arn, nil
49
+ default_config :on_failure, nil # accepts DO_NOTHING, ROLLBACK, DELETE
50
+ default_config :stack_policy_body, nil
51
+ default_config :stack_policy_url, nil
52
+ default_config :tags, {}
52
53
 
53
54
  required_config :ssh_key
54
55
  required_config :stack_name
@@ -118,11 +119,11 @@ module Kitchen
118
119
 
119
120
  def cf
120
121
  @cf ||= Aws::CfClient.new(
121
- config[:region],
122
+ '',
122
123
  config[:shared_credentials_profile],
123
124
  config[:ssl_cert_file],
124
- { access_key_id: config[:aws_access_key_id], secret_access_key: config[:aws_secret_access_key] },
125
- config[:aws_session_token]
125
+ { access_key_id: nil, secret_access_key: nil },
126
+ nil
126
127
  )
127
128
  end
128
129
 
@@ -1,4 +1,3 @@
1
- # -*- encoding: utf-8 -*-
2
1
  #
3
2
  # Licensed under the Apache License, Version 2.0 (the "License");
4
3
  # you may not use this file except in compliance with the License.
@@ -15,6 +14,6 @@
15
14
  module Kitchen
16
15
  module Driver
17
16
  # Version string for CloudFormation Test Kitchen driver
18
- CLOUDFORMATION_VERSION = '1.0.3'.freeze
17
+ CLOUDFORMATION_VERSION = '1.1.0'.freeze
19
18
  end
20
19
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kitchen-cloudformation
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Neill Turner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-02-20 00:00:00.000000000 Z
11
+ date: 2017-01-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: test-kitchen