kitchen-terraform 0.3.0 → 0.4.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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/README.md +61 -27
- data/lib/kitchen/driver/terraform.rb +2 -3
- data/lib/kitchen/provisioner/terraform.rb +3 -0
- data/lib/kitchen/verifier/terraform.rb +36 -21
- data/lib/terraform/apply_command.rb +4 -3
- data/lib/terraform/client.rb +23 -8
- data/lib/terraform/command.rb +1 -2
- data/lib/terraform/group.rb +22 -18
- data/lib/terraform/output_command.rb +3 -2
- data/lib/terraform/{inspec_runner.rb → parallelism_config.rb} +12 -16
- data/lib/terraform/plan_command.rb +6 -3
- data/lib/terraform/version.rb +1 -1
- data/lib/terraform/zero_seven_output.rb +1 -0
- data/lib/terraform/zero_six_output.rb +1 -0
- metadata +46 -36
- metadata.gz.sig +2 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1df0e3998d394adc8988feb446bfc1149575e5a0
|
4
|
+
data.tar.gz: 0f0915e9ad1c7be1a4c941bf4b0d357a455d6b4e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eca7ed84aaa1026a85260bffca9696d0f5d0af5c3b14a414ae97514fed568ef95b17eacd89bac1e474be491ed4a2a399475b37daafae62e27836854260c83e66
|
7
|
+
data.tar.gz: 9db90acbe78ad0f876de61b00af6ec2a490115a4a82ed21be8ec35351e24ba19834d4c7a2e3a6a3c31704e560ba185c6bcf9b78b9a9c8e6a856614341074f032
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/README.md
CHANGED
@@ -1,4 +1,10 @@
|
|
1
|
-
# kitchen-terraform
|
1
|
+
#  kitchen-terraform
|
2
|
+
|
3
|
+
[](https://badge.fury.io/rb/kitchen-terraform)
|
4
|
+
[](https://codeclimate.com/github/newcontext-oss/kitchen-terraform)
|
5
|
+
[](https://codeclimate.com/github/newcontext-oss/kitchen-terraform)
|
6
|
+
[](https://travis-ci.org/newcontext-oss/kitchen-terraform)
|
7
|
+
[](https://codeclimate.com/github/newcontext-oss/kitchen-terraform/coverage)
|
2
8
|
|
3
9
|
kitchen-terraform is a set of [Test Kitchen] plugins for testing
|
4
10
|
[Terraform configuration].
|
@@ -9,7 +15,7 @@ kitchen-terraform is a set of [Test Kitchen] plugins for testing
|
|
9
15
|
|
10
16
|
## Requirements
|
11
17
|
|
12
|
-
- [Ruby] **(~> 2.
|
18
|
+
- [Ruby] **(~> 2.1)**
|
13
19
|
|
14
20
|
- [Bundler] **(~> 1.12)**
|
15
21
|
|
@@ -31,9 +37,9 @@ which means it can be [installed with Bundler].
|
|
31
37
|
Once Bundler is installed, add kitchen-terraform to the project's Gemfile:
|
32
38
|
|
33
39
|
```rb
|
34
|
-
source 'https://rubygems.org'
|
35
|
-
|
36
|
-
|
40
|
+
source 'https://rubygems.org/' do
|
41
|
+
gem 'kitchen-terraform', '~> 0.4'
|
42
|
+
end
|
37
43
|
```
|
38
44
|
|
39
45
|
Then, use Bundler to install the gems:
|
@@ -175,6 +181,23 @@ provisioner:
|
|
175
181
|
|
176
182
|
The default `directory` is the current working directory of Test Kitchen.
|
177
183
|
|
184
|
+
##### parallelism
|
185
|
+
|
186
|
+
The number of concurrent operations to allow for the Terraform `apply` and
|
187
|
+
`plan` commands.
|
188
|
+
|
189
|
+
###### Example .kitchen.yml
|
190
|
+
|
191
|
+
```yaml
|
192
|
+
provisioner:
|
193
|
+
name: terraform
|
194
|
+
parallelism: 2
|
195
|
+
```
|
196
|
+
|
197
|
+
###### Default
|
198
|
+
|
199
|
+
The default `parallelism` is 10.
|
200
|
+
|
178
201
|
##### variable_files
|
179
202
|
|
180
203
|
A collection of pathnames of [Terraform variable files] to be evaluated
|
@@ -262,43 +285,50 @@ configuration defined by that plugin with the exception of the `port` and
|
|
262
285
|
|
263
286
|
##### groups
|
264
287
|
|
265
|
-
A collection of
|
266
|
-
connection options for the different server instance groups in the
|
288
|
+
A collection of mappings that define how to test different resources in the
|
267
289
|
Terraform configuration.
|
268
290
|
|
269
|
-
[InSpec control]: http://inspec.io/docs/reference/dsl_inspec/
|
270
|
-
|
271
291
|
Each group consists of:
|
272
292
|
|
273
|
-
- a name to use for logging purposes
|
293
|
+
- a `name` to use for logging purposes
|
274
294
|
|
275
|
-
-
|
276
|
-
names to define for the suite's InSpec profile
|
295
|
+
- an optional `attributes` mapping of InSpec profile attribute names to
|
296
|
+
Terraform output variable names to define for the suite's InSpec profile
|
277
297
|
|
278
|
-
- a collection of controls to include from the suite's
|
298
|
+
- a `controls` collection of [InSpec controls] to include from the suite's
|
299
|
+
InSpec profile
|
279
300
|
|
280
|
-
- a
|
281
|
-
|
301
|
+
- a mapping of InSpec profile attribute names to Terraform output variable
|
302
|
+
names; the attributes will be with the resolved output values
|
282
303
|
|
283
|
-
-
|
304
|
+
- an optional `hostnames` output variable name to use for extracting hostnames
|
305
|
+
from the Terraform state; the resolved output value is assumed to be a
|
306
|
+
list of strings or a string in CSV format
|
284
307
|
|
285
|
-
-
|
308
|
+
- an optional `port` to use when connecting to the group's hosts
|
309
|
+
|
310
|
+
- an optional `username` to use when connecting to the group's hosts
|
311
|
+
|
312
|
+
If `hostnames` is empty then the group's `controls` will be executed
|
313
|
+
locally; this enables testing of a provider's API to verify non-server
|
314
|
+
resources.
|
315
|
+
|
316
|
+
[InSpec controls]: http://inspec.io/docs/reference/dsl_inspec/
|
286
317
|
|
287
318
|
###### Example .kitchen.yml
|
288
319
|
|
289
320
|
```yaml
|
290
|
-
---
|
291
321
|
verifier:
|
292
322
|
name: terraform
|
293
323
|
groups:
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
324
|
+
- name: arbitrary
|
325
|
+
attributes:
|
326
|
+
foo: bar
|
327
|
+
controls:
|
328
|
+
- biz
|
329
|
+
hostnames: hostnames_output
|
330
|
+
port: 123
|
331
|
+
username: test-user
|
302
332
|
```
|
303
333
|
|
304
334
|
###### Defaults
|
@@ -307,10 +337,14 @@ The default `groups` collection is empty.
|
|
307
337
|
|
308
338
|
For each group:
|
309
339
|
|
310
|
-
- the default `attributes` mapping
|
340
|
+
- the default `attributes` mapping consists of equivalently named
|
341
|
+
attributes for each output variable; additional or overridden
|
342
|
+
associations can be added.
|
311
343
|
|
312
344
|
- the default `controls` collection is empty
|
313
345
|
|
346
|
+
- the default `hostnames` string is empty
|
347
|
+
|
314
348
|
- the default `port` is obtained from the transport
|
315
349
|
|
316
350
|
- the default `username` is obtained from the transport
|
@@ -48,12 +48,11 @@ module Kitchen
|
|
48
48
|
|
49
49
|
def verify_dependencies
|
50
50
|
case version
|
51
|
-
when /v0\.
|
51
|
+
when /(v[^0]|v0\.[^67])/
|
52
|
+
raise Kitchen::UserError, 'Only Terraform v0.7 and v0.6 are supported'
|
52
53
|
when /v0\.6/
|
53
54
|
log_deprecation aspect: 'v0.6', remediation: 'Update to v0.7',
|
54
55
|
version: '1.0'
|
55
|
-
else
|
56
|
-
raise Kitchen::UserError, 'Only Terraform v0.7 and v0.6 are supported'
|
57
56
|
end
|
58
57
|
end
|
59
58
|
end
|
@@ -19,6 +19,7 @@ require 'terraform/apply_timeout_config'
|
|
19
19
|
require 'terraform/color_config'
|
20
20
|
require 'terraform/configurable'
|
21
21
|
require 'terraform/directory_config'
|
22
|
+
require 'terraform/parallelism_config'
|
22
23
|
require 'terraform/plan_config'
|
23
24
|
require 'terraform/state_config'
|
24
25
|
require 'terraform/variable_files_config'
|
@@ -36,6 +37,8 @@ module Kitchen
|
|
36
37
|
|
37
38
|
include ::Terraform::DirectoryConfig
|
38
39
|
|
40
|
+
include ::Terraform::ParallelismConfig
|
41
|
+
|
39
42
|
include ::Terraform::PlanConfig
|
40
43
|
|
41
44
|
include ::Terraform::StateConfig
|
@@ -29,48 +29,63 @@ module Kitchen
|
|
29
29
|
|
30
30
|
kitchen_verifier_api_version 2
|
31
31
|
|
32
|
+
def call(state)
|
33
|
+
verify_groups options: runner_options(transport, state)
|
34
|
+
end
|
35
|
+
|
36
|
+
private
|
37
|
+
|
32
38
|
def add_targets(runner:)
|
33
39
|
collect_tests.each { |test| runner.add_target test }
|
34
40
|
end
|
35
41
|
|
36
|
-
def
|
37
|
-
|
38
|
-
|
42
|
+
def execute(group:, options:)
|
43
|
+
options.merge! group.options
|
44
|
+
::Inspec::Runner.new(options).tap do |runner|
|
45
|
+
add_targets runner: runner
|
46
|
+
validate exit_code: runner.run
|
47
|
+
end
|
39
48
|
end
|
40
49
|
|
41
|
-
def
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
end
|
50
|
+
def execute_local(group:, options:)
|
51
|
+
options[:backend] = 'local'
|
52
|
+
info "Verifying group '#{group.name}'"
|
53
|
+
execute group: group, options: options
|
46
54
|
end
|
47
55
|
|
48
|
-
def
|
49
|
-
|
56
|
+
def execute_remote(group:, options:)
|
57
|
+
driver.output_value list: true, name: group.hostnames do |hostname|
|
58
|
+
options[:host] = hostname
|
59
|
+
info "Verifying host '#{hostname}' of group '#{group.name}'"
|
60
|
+
execute group: group, options: options
|
61
|
+
end
|
50
62
|
end
|
51
63
|
|
52
64
|
def resolve_attributes(group:)
|
65
|
+
driver.each_output_name do |output_name|
|
66
|
+
group.store_attribute key: output_name, value: output_name
|
67
|
+
end
|
53
68
|
group.each_attribute do |key, output_name|
|
54
69
|
group.store_attribute key: key,
|
55
70
|
value: driver.output_value(name: output_name)
|
56
71
|
end
|
57
72
|
end
|
58
73
|
|
59
|
-
def
|
60
|
-
|
61
|
-
end
|
74
|
+
def validate(exit_code:)
|
75
|
+
return if exit_code.zero?
|
62
76
|
|
63
|
-
|
64
|
-
raise InstanceFailure, "Inspec Runner returns #{exit_code}" unless
|
65
|
-
exit_code.zero?
|
77
|
+
raise ::Kitchen::InstanceFailure, "Inspec Runner returns #{exit_code}"
|
66
78
|
end
|
67
79
|
|
68
|
-
|
69
|
-
|
70
|
-
|
80
|
+
def verify(group:, options:)
|
81
|
+
resolve_attributes group: group
|
82
|
+
group.if_local { return execute_local group: group, options: options }
|
83
|
+
execute_remote group: group, options: options
|
84
|
+
end
|
71
85
|
|
72
|
-
def
|
73
|
-
|
86
|
+
def verify_groups(options:)
|
87
|
+
config[:groups]
|
88
|
+
.each { |group| verify group: group, options: options.dup }
|
74
89
|
end
|
75
90
|
end
|
76
91
|
end
|
@@ -27,15 +27,16 @@ module Terraform
|
|
27
27
|
end
|
28
28
|
|
29
29
|
def options
|
30
|
-
"-input=false -state=#{state} #{color_switch}"
|
30
|
+
"-input=false -parallelism=#{parallelism} -state=#{state} #{color_switch}"
|
31
31
|
end
|
32
32
|
|
33
33
|
private
|
34
34
|
|
35
|
-
attr_accessor :state
|
35
|
+
attr_accessor :parallelism, :state
|
36
36
|
|
37
|
-
def initialize_attributes(color:, state:)
|
37
|
+
def initialize_attributes(color:, parallelism:, state:)
|
38
38
|
self.color = color
|
39
|
+
self.parallelism = parallelism
|
39
40
|
self.state = state
|
40
41
|
end
|
41
42
|
end
|
data/lib/terraform/client.rb
CHANGED
@@ -30,8 +30,8 @@ module Terraform
|
|
30
30
|
|
31
31
|
def apply_execution_plan
|
32
32
|
execute command: ApplyCommand.new(
|
33
|
-
color: provisioner[:color],
|
34
|
-
target: provisioner[:plan]
|
33
|
+
color: provisioner[:color], parallelism: provisioner[:parallelism],
|
34
|
+
state: provisioner[:state], target: provisioner[:plan]
|
35
35
|
), timeout: provisioner[:apply_timeout]
|
36
36
|
end
|
37
37
|
|
@@ -54,13 +54,17 @@ module Terraform
|
|
54
54
|
) { |value| list ? value.each(&block) : (return value) }
|
55
55
|
end
|
56
56
|
|
57
|
+
def each_output_name(&block)
|
58
|
+
execute(
|
59
|
+
command: OutputCommand.new(
|
60
|
+
list: false, state: provisioner[:state], version: version,
|
61
|
+
return_raw: true
|
62
|
+
)
|
63
|
+
) { |output| JSON.parse(output).each_key(&block) }
|
64
|
+
end
|
65
|
+
|
57
66
|
def plan_execution(destroy:)
|
58
|
-
execute command:
|
59
|
-
color: provisioner[:color], destroy: destroy, out: provisioner[:plan],
|
60
|
-
state: provisioner[:state], target: provisioner[:directory],
|
61
|
-
variables: provisioner[:variables],
|
62
|
-
variable_files: provisioner[:variable_files]
|
63
|
-
)
|
67
|
+
execute command: plan_command(destroy: destroy)
|
64
68
|
end
|
65
69
|
|
66
70
|
def validate_configuration_files
|
@@ -72,5 +76,16 @@ module Terraform
|
|
72
76
|
return value.slice(/v\d+\.\d+\.\d+/)
|
73
77
|
end
|
74
78
|
end
|
79
|
+
|
80
|
+
private
|
81
|
+
|
82
|
+
def plan_command(destroy:)
|
83
|
+
PlanCommand
|
84
|
+
.new color: provisioner[:color], destroy: destroy,
|
85
|
+
out: provisioner[:plan], parallelism: provisioner[:parallelism],
|
86
|
+
state: provisioner[:state], target: provisioner[:directory],
|
87
|
+
variables: provisioner[:variables],
|
88
|
+
variable_files: provisioner[:variable_files]
|
89
|
+
end
|
75
90
|
end
|
76
91
|
end
|
data/lib/terraform/command.rb
CHANGED
data/lib/terraform/group.rb
CHANGED
@@ -14,27 +14,34 @@
|
|
14
14
|
# See the License for the specific language governing permissions and
|
15
15
|
# limitations under the License.
|
16
16
|
|
17
|
+
require 'kitchen/util'
|
18
|
+
|
17
19
|
module Terraform
|
18
20
|
# Group of Terraform server instances to be verified
|
19
21
|
class Group
|
20
22
|
def each_attribute(&block)
|
21
|
-
data[:attributes].each_pair(&block)
|
22
|
-
end
|
23
|
-
|
24
|
-
def evaluate(verifier:)
|
25
|
-
verifier.merge options: options
|
26
|
-
verifier.resolve_attributes group: self
|
27
|
-
verifier.resolve_hostnames group: self do |hostname|
|
28
|
-
verifier.info "Verifying host '#{hostname}' of group '#{data[:name]}'"
|
29
|
-
verifier.merge options: { host: hostname }
|
30
|
-
verifier.execute
|
31
|
-
end
|
23
|
+
data[:attributes].dup.each_pair(&block)
|
32
24
|
end
|
33
25
|
|
34
26
|
def hostnames
|
35
27
|
data[:hostnames]
|
36
28
|
end
|
37
29
|
|
30
|
+
def if_local
|
31
|
+
yield if hostnames.empty?
|
32
|
+
end
|
33
|
+
|
34
|
+
def name
|
35
|
+
data[:name]
|
36
|
+
end
|
37
|
+
|
38
|
+
def options
|
39
|
+
{
|
40
|
+
attributes: attributes, controls: data[:controls], port: data[:port],
|
41
|
+
user: data[:username]
|
42
|
+
}
|
43
|
+
end
|
44
|
+
|
38
45
|
def store_attribute(key:, value:)
|
39
46
|
data[:attributes][key] = value
|
40
47
|
end
|
@@ -43,15 +50,12 @@ module Terraform
|
|
43
50
|
|
44
51
|
attr_accessor :data
|
45
52
|
|
46
|
-
def
|
47
|
-
|
53
|
+
def attributes
|
54
|
+
::Kitchen::Util.stringified_hash data[:attributes]
|
48
55
|
end
|
49
56
|
|
50
|
-
def
|
51
|
-
|
52
|
-
attributes: data[:attributes], controls: data[:controls],
|
53
|
-
port: data[:port], user: data[:username]
|
54
|
-
}
|
57
|
+
def initialize(data:)
|
58
|
+
self.data = data
|
55
59
|
end
|
56
60
|
end
|
57
61
|
end
|
@@ -30,12 +30,13 @@ module Terraform
|
|
30
30
|
|
31
31
|
private
|
32
32
|
|
33
|
-
attr_accessor :list, :state
|
33
|
+
attr_accessor :list, :state, :return_raw
|
34
34
|
|
35
|
-
def initialize_attributes(list:, version:, state:)
|
35
|
+
def initialize_attributes(list:, version:, state:, return_raw: false)
|
36
36
|
extend_behaviour version: version
|
37
37
|
self.list = list
|
38
38
|
self.state = state
|
39
|
+
self.return_raw = return_raw
|
39
40
|
end
|
40
41
|
|
41
42
|
def version_behaviours
|
@@ -14,25 +14,21 @@
|
|
14
14
|
# See the License for the specific language governing permissions and
|
15
15
|
# limitations under the License.
|
16
16
|
|
17
|
-
require 'inspec'
|
18
|
-
require 'kitchen'
|
19
|
-
|
20
17
|
module Terraform
|
21
|
-
#
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
18
|
+
# Behaviour for the [:parallelism] config option
|
19
|
+
module ParallelismConfig
|
20
|
+
def self.included(configurable_class)
|
21
|
+
configurable_class
|
22
|
+
.required_config :parallelism do |_, value, configurable|
|
23
|
+
configurable.coerce_parallelism value: value
|
24
|
+
end
|
25
|
+
configurable_class.default_config :parallelism, 10
|
29
26
|
end
|
30
27
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
super
|
28
|
+
def coerce_parallelism(value:)
|
29
|
+
config[:parallelism] = Integer value
|
30
|
+
rescue ::ArgumentError, ::TypeError
|
31
|
+
config_error attribute: 'parallelism', expected: 'an integer'
|
36
32
|
end
|
37
33
|
end
|
38
34
|
end
|
@@ -27,20 +27,23 @@ module Terraform
|
|
27
27
|
end
|
28
28
|
|
29
29
|
def options
|
30
|
-
"-destroy=#{destroy} -input=false -out=#{out}
|
30
|
+
"-destroy=#{destroy} -input=false -out=#{out} " \
|
31
|
+
"-parallelism=#{parallelism} -state=#{state} " \
|
31
32
|
"#{color_switch}#{processed_variables}#{processed_variable_files}"
|
32
33
|
end
|
33
34
|
|
34
35
|
private
|
35
36
|
|
36
|
-
attr_accessor :destroy, :out, :state, :variables,
|
37
|
+
attr_accessor :destroy, :out, :parallelism, :state, :variables,
|
38
|
+
:variable_files
|
37
39
|
|
38
40
|
def initialize_attributes(
|
39
|
-
color:, destroy:, out:, state:, variables:, variable_files:
|
41
|
+
color:, destroy:, out:, parallelism:, state:, variables:, variable_files:
|
40
42
|
)
|
41
43
|
self.color = color
|
42
44
|
self.destroy = destroy
|
43
45
|
self.out = out
|
46
|
+
self.parallelism = parallelism
|
44
47
|
self.state = state
|
45
48
|
self.variables = variables
|
46
49
|
self.variable_files = variable_files
|
data/lib/terraform/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,19 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kitchen-terraform
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aaron Lane
|
8
|
+
- Clay Thomas
|
9
|
+
- Erik R. Rygg
|
10
|
+
- Ewa Czechowska
|
8
11
|
- Kevin Dickerson
|
12
|
+
- Kyle Sexton
|
9
13
|
- Michael Glenney
|
10
14
|
- Nell Shamrell-Harrington
|
11
15
|
- Nick Willever
|
16
|
+
- Walter Dolce
|
12
17
|
autorequire:
|
13
18
|
bindir: bin
|
14
19
|
cert_chain:
|
@@ -35,7 +40,7 @@ cert_chain:
|
|
35
40
|
KucGZX3OeACVUSpmCOCQyma6sDHYWQZM/IgWi7tbLtG5b2GslkauPm4S3wadHi6W
|
36
41
|
LOU=
|
37
42
|
-----END CERTIFICATE-----
|
38
|
-
date: 2016-
|
43
|
+
date: 2016-12-24 00:00:00.000000000 Z
|
39
44
|
dependencies:
|
40
45
|
- !ruby/object:Gem::Dependency
|
41
46
|
name: bundler-audit
|
@@ -57,6 +62,20 @@ dependencies:
|
|
57
62
|
- - ">="
|
58
63
|
- !ruby/object:Gem::Version
|
59
64
|
version: 0.5.0
|
65
|
+
- !ruby/object:Gem::Dependency
|
66
|
+
name: codeclimate-test-reporter
|
67
|
+
requirement: !ruby/object:Gem::Requirement
|
68
|
+
requirements:
|
69
|
+
- - "~>"
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
version: '1.0'
|
72
|
+
type: :development
|
73
|
+
prerelease: false
|
74
|
+
version_requirements: !ruby/object:Gem::Requirement
|
75
|
+
requirements:
|
76
|
+
- - "~>"
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: '1.0'
|
60
79
|
- !ruby/object:Gem::Dependency
|
61
80
|
name: guard
|
62
81
|
requirement: !ruby/object:Gem::Requirement
|
@@ -191,6 +210,20 @@ dependencies:
|
|
191
210
|
- - ">="
|
192
211
|
- !ruby/object:Gem::Version
|
193
212
|
version: 0.10.3
|
213
|
+
- !ruby/object:Gem::Dependency
|
214
|
+
name: pry-coolline
|
215
|
+
requirement: !ruby/object:Gem::Requirement
|
216
|
+
requirements:
|
217
|
+
- - "~>"
|
218
|
+
- !ruby/object:Gem::Version
|
219
|
+
version: '0.2'
|
220
|
+
type: :development
|
221
|
+
prerelease: false
|
222
|
+
version_requirements: !ruby/object:Gem::Requirement
|
223
|
+
requirements:
|
224
|
+
- - "~>"
|
225
|
+
- !ruby/object:Gem::Version
|
226
|
+
version: '0.2'
|
194
227
|
- !ruby/object:Gem::Dependency
|
195
228
|
name: rspec
|
196
229
|
requirement: !ruby/object:Gem::Requirement
|
@@ -232,39 +265,19 @@ dependencies:
|
|
232
265
|
- !ruby/object:Gem::Version
|
233
266
|
version: 0.40.0
|
234
267
|
- !ruby/object:Gem::Dependency
|
235
|
-
name:
|
236
|
-
requirement: !ruby/object:Gem::Requirement
|
237
|
-
requirements:
|
238
|
-
- - "~>"
|
239
|
-
- !ruby/object:Gem::Version
|
240
|
-
version: '2.9'
|
241
|
-
type: :development
|
242
|
-
prerelease: false
|
243
|
-
version_requirements: !ruby/object:Gem::Requirement
|
244
|
-
requirements:
|
245
|
-
- - "~>"
|
246
|
-
- !ruby/object:Gem::Version
|
247
|
-
version: '2.9'
|
248
|
-
- !ruby/object:Gem::Dependency
|
249
|
-
name: simplecov
|
268
|
+
name: travis
|
250
269
|
requirement: !ruby/object:Gem::Requirement
|
251
270
|
requirements:
|
252
271
|
- - "~>"
|
253
272
|
- !ruby/object:Gem::Version
|
254
|
-
version: '
|
255
|
-
- - ">="
|
256
|
-
- !ruby/object:Gem::Version
|
257
|
-
version: 0.11.2
|
273
|
+
version: '1.8'
|
258
274
|
type: :development
|
259
275
|
prerelease: false
|
260
276
|
version_requirements: !ruby/object:Gem::Requirement
|
261
277
|
requirements:
|
262
278
|
- - "~>"
|
263
279
|
- !ruby/object:Gem::Version
|
264
|
-
version: '
|
265
|
-
- - ">="
|
266
|
-
- !ruby/object:Gem::Version
|
267
|
-
version: 0.11.2
|
280
|
+
version: '1.8'
|
268
281
|
- !ruby/object:Gem::Dependency
|
269
282
|
name: inspec
|
270
283
|
requirement: !ruby/object:Gem::Requirement
|
@@ -363,8 +376,8 @@ files:
|
|
363
376
|
- lib/terraform/get_command.rb
|
364
377
|
- lib/terraform/group.rb
|
365
378
|
- lib/terraform/groups_config.rb
|
366
|
-
- lib/terraform/inspec_runner.rb
|
367
379
|
- lib/terraform/output_command.rb
|
380
|
+
- lib/terraform/parallelism_config.rb
|
368
381
|
- lib/terraform/plan_command.rb
|
369
382
|
- lib/terraform/plan_config.rb
|
370
383
|
- lib/terraform/show_command.rb
|
@@ -376,7 +389,7 @@ files:
|
|
376
389
|
- lib/terraform/version_command.rb
|
377
390
|
- lib/terraform/zero_seven_output.rb
|
378
391
|
- lib/terraform/zero_six_output.rb
|
379
|
-
homepage: https://github.com/newcontext/kitchen-terraform
|
392
|
+
homepage: https://github.com/newcontext-oss/kitchen-terraform
|
380
393
|
licenses:
|
381
394
|
- Apache-2.0
|
382
395
|
metadata: {}
|
@@ -386,24 +399,21 @@ require_paths:
|
|
386
399
|
- lib
|
387
400
|
required_ruby_version: !ruby/object:Gem::Requirement
|
388
401
|
requirements:
|
389
|
-
- - "~>"
|
390
|
-
- !ruby/object:Gem::Version
|
391
|
-
version: '2.3'
|
392
402
|
- - ">="
|
393
403
|
- !ruby/object:Gem::Version
|
394
|
-
version: 2.
|
404
|
+
version: '2.1'
|
405
|
+
- - "<"
|
406
|
+
- !ruby/object:Gem::Version
|
407
|
+
version: '2.4'
|
395
408
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
396
409
|
requirements:
|
397
|
-
- - "~>"
|
398
|
-
- !ruby/object:Gem::Version
|
399
|
-
version: '2.6'
|
400
410
|
- - ">="
|
401
411
|
- !ruby/object:Gem::Version
|
402
|
-
version:
|
412
|
+
version: '0'
|
403
413
|
requirements:
|
404
414
|
- Terraform >= 0.6.0, < 0.8.0
|
405
415
|
rubyforge_project:
|
406
|
-
rubygems_version: 2.
|
416
|
+
rubygems_version: 2.5.2
|
407
417
|
signing_key:
|
408
418
|
specification_version: 4
|
409
419
|
summary: Test Kitchen plugins for testing Terraform projects
|
metadata.gz.sig
CHANGED
@@ -1,4 +1,2 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
Uk�����x�+q�xO�d���)�R�P8��ٌ�f��t��tb��Oi�v�����.>��f���G�E��mY���{^M��Fr"�-��x��\
|
4
|
-
�����.�o�S{�X�-JG��P,�`8M�!���*��s��-N��+[�(UÐ}�����~�4�Ap��Ve��H�efyăo
|
1
|
+
���o��6��p�����ZT�B;zH�N��W˔N��p9^^d2�$H������W�U[zy��Ώ������sج��s�U��jRYs����z7�B����h�(;Pn�W�k��ϯ�0;��L`4�1k��HW�ŢP�h}���)5�9Vaeʕi��O{�����Y|
|
2
|
+
KP�Y���f>�����1�z��|)�(33t�XS9']�HJS
|