kitchen-terraform 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fab118f04f2357e74aea7dc6cd9a3d41ce176e86
4
- data.tar.gz: 1184130c5eb929bb545689877cb6b4d86896be7c
3
+ metadata.gz: 1df0e3998d394adc8988feb446bfc1149575e5a0
4
+ data.tar.gz: 0f0915e9ad1c7be1a4c941bf4b0d357a455d6b4e
5
5
  SHA512:
6
- metadata.gz: 2920103244e6bed6c7679692d86a21770f16cad1f6bf8346ef1db3f8f5afc78eba46105c0a7b444cedc227cce550dff0bba56c32f86dbdae23da647dfa1cbe79
7
- data.tar.gz: e4656ec4baaf076ba378ff90db2c6972c5e25ed3de91024f72bd826c0257aac91a47c8438db1e223f68a64af19759c49ae22bacbb202153fdbb3944bac9409d9
6
+ metadata.gz: eca7ed84aaa1026a85260bffca9696d0f5d0af5c3b14a414ae97514fed568ef95b17eacd89bac1e474be491ed4a2a399475b37daafae62e27836854260c83e66
7
+ data.tar.gz: 9db90acbe78ad0f876de61b00af6ec2a490115a4a82ed21be8ec35351e24ba19834d4c7a2e3a6a3c31704e560ba185c6bcf9b78b9a9c8e6a856614341074f032
Binary file
data.tar.gz.sig CHANGED
Binary file
data/README.md CHANGED
@@ -1,4 +1,10 @@
1
- # kitchen-terraform
1
+ # ![kitchen-terraform logo](assets/logo.png) kitchen-terraform
2
+
3
+ [![Gem Version](https://badge.fury.io/rb/kitchen-terraform.svg)](https://badge.fury.io/rb/kitchen-terraform)
4
+ [![Code Climate](https://codeclimate.com/github/newcontext-oss/kitchen-terraform/badges/gpa.svg)](https://codeclimate.com/github/newcontext-oss/kitchen-terraform)
5
+ [![Issue Count](https://codeclimate.com/github/newcontext-oss/kitchen-terraform/badges/issue_count.svg)](https://codeclimate.com/github/newcontext-oss/kitchen-terraform)
6
+ [![Build Status Master](https://travis-ci.org/newcontext-oss/kitchen-terraform.svg?branch=master)](https://travis-ci.org/newcontext-oss/kitchen-terraform)
7
+ [![Test Coverage](https://codeclimate.com/github/newcontext-oss/kitchen-terraform/badges/coverage.svg)](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.3)**
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
- gem 'kitchen-terraform', '~> 0.1'
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 group mappings containing [InSpec control] and
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
- - a mapping of InSpec attribute names to Terraform output variable
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 InSpec profile
298
+ - a `controls` collection of [InSpec controls] to include from the suite's
299
+ InSpec profile
279
300
 
280
- - a hostnames output variable name to use for extracting hostnames from
281
- the Terraform state; the output value is assumed to be in CSV format
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
- - the port to use when connecting to the group's hosts
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
- - the username to use when connecting to the group's hosts
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
- - name: arbitrary
295
- attributes:
296
- foo: bar
297
- controls:
298
- - biz
299
- hostnames: hostnames_output
300
- port: 123
301
- username: test-user
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 is empty
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\.7/
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 call(state)
37
- self.inspec_runner_options = runner_options transport, state
38
- config[:groups].each { |group| group.evaluate verifier: self }
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 execute
42
- ::Terraform::InspecRunner.new(inspec_runner_options)
43
- .tap do |inspec_runner|
44
- inspec_runner.evaluate verifier: self
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 merge(options:)
49
- inspec_runner_options.merge! options
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 resolve_hostnames(group:, &block)
60
- driver.output_value list: true, name: group.hostnames, &block
61
- end
74
+ def validate(exit_code:)
75
+ return if exit_code.zero?
62
76
 
63
- def verify(exit_code:)
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
- private
69
-
70
- attr_accessor :inspec_runner_options
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 load_needed_dependencies!
73
- require 'terraform/inspec_runner'
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
@@ -30,8 +30,8 @@ module Terraform
30
30
 
31
31
  def apply_execution_plan
32
32
  execute command: ApplyCommand.new(
33
- color: provisioner[:color], state: provisioner[:state],
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: PlanCommand.new(
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
@@ -52,8 +52,7 @@ module Terraform
52
52
  .new "terraform #{name} #{options} #{target}", returns: 0
53
53
  end
54
54
 
55
- def initialize_attributes(**_keyword_arguments)
56
- end
55
+ def initialize_attributes(**_keyword_arguments) end
57
56
 
58
57
  def processed_output(raw_output:)
59
58
  raw_output
@@ -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 initialize(data:)
47
- self.data = data
53
+ def attributes
54
+ ::Kitchen::Util.stringified_hash data[:attributes]
48
55
  end
49
56
 
50
- def options
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
- # Inspec::Runner with convenience methods for use by
22
- # Kitchen::Verifier::Terraform
23
- class InspecRunner < Inspec::Runner
24
- attr_reader :conf
25
-
26
- def evaluate(verifier:)
27
- verifier.add_targets runner: self
28
- verifier.verify exit_code: run
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
- private
32
-
33
- def initialize(conf = {})
34
- conf[:attributes] = Kitchen::Util.stringified_hash conf[:attributes]
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} -state=#{state} " \
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, :variable_files
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
@@ -15,5 +15,5 @@
15
15
  # limitations under the License.
16
16
 
17
17
  module Terraform
18
- VERSION = '0.3.0'
18
+ VERSION = '0.4.0'
19
19
  end
@@ -26,6 +26,7 @@ module Terraform
26
26
  private
27
27
 
28
28
  def processed_output(raw_output:)
29
+ return raw_output if return_raw
29
30
  JSON.parse(raw_output).fetch('value')
30
31
  .tap { |value| return list ? Array(value) : value }
31
32
  end
@@ -24,6 +24,7 @@ module Terraform
24
24
  private
25
25
 
26
26
  def processed_output(raw_output:)
27
+ return raw_output if return_raw
27
28
  raw_output.chomp.tap { |value| return list ? value.split(',') : value }
28
29
  end
29
30
  end
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.3.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-10-04 00:00:00.000000000 Z
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: rubycritic
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: '0.11'
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: '0.11'
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.3.1
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: 2.6.3
412
+ version: '0'
403
413
  requirements:
404
414
  - Terraform >= 0.6.0, < 0.8.0
405
415
  rubyforge_project:
406
- rubygems_version: 2.6.6
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!P��
2
- ��,�t{E*��C
3
- Uk�����x�+q�x O�񯸜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