kitchen-terraform 5.1.1 → 5.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (111) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/README.md +37 -173
  5. data/lib/kitchen/driver/terraform.rb +196 -514
  6. data/lib/kitchen/provisioner/terraform.rb +88 -86
  7. data/lib/kitchen/terraform.rb +5 -6
  8. data/lib/kitchen/terraform/breaking.rb +7 -5
  9. data/lib/kitchen/terraform/command.rb +7 -5
  10. data/lib/kitchen/terraform/command/apply.rb +87 -0
  11. data/lib/kitchen/terraform/command/destroy.rb +88 -0
  12. data/lib/kitchen/terraform/command/get.rb +32 -0
  13. data/lib/kitchen/terraform/command/init.rb +102 -0
  14. data/lib/kitchen/terraform/command/output.rb +11 -50
  15. data/lib/kitchen/terraform/command/validate.rb +63 -0
  16. data/lib/kitchen/terraform/command/version.rb +5 -42
  17. data/lib/kitchen/terraform/command/workspace_delete.rb +41 -0
  18. data/lib/kitchen/terraform/command/workspace_new.rb +43 -0
  19. data/lib/kitchen/terraform/command/workspace_select.rb +43 -0
  20. data/lib/kitchen/terraform/command_executor.rb +60 -0
  21. data/lib/kitchen/terraform/command_flag.rb +23 -0
  22. data/lib/kitchen/terraform/command_flag/backend_config.rb +43 -0
  23. data/lib/kitchen/terraform/command_flag/color.rb +45 -0
  24. data/lib/kitchen/terraform/command_flag/lock_timeout.rb +42 -0
  25. data/lib/kitchen/terraform/command_flag/plugin_dir.rb +47 -0
  26. data/lib/kitchen/terraform/command_flag/upgrade.rb +45 -0
  27. data/lib/kitchen/terraform/command_flag/var.rb +43 -0
  28. data/lib/kitchen/terraform/command_flag/var_file.rb +45 -0
  29. data/lib/kitchen/terraform/config_attribute.rb +58 -55
  30. data/lib/kitchen/terraform/config_attribute/backend_configurations.rb +1 -1
  31. data/lib/kitchen/terraform/config_attribute/client.rb +10 -3
  32. data/lib/kitchen/terraform/config_attribute/color.rb +1 -1
  33. data/lib/kitchen/terraform/config_attribute/command_timeout.rb +1 -1
  34. data/lib/kitchen/terraform/config_attribute/fail_fast.rb +1 -1
  35. data/lib/kitchen/terraform/config_attribute/lock.rb +1 -1
  36. data/lib/kitchen/terraform/config_attribute/lock_timeout.rb +1 -1
  37. data/lib/kitchen/terraform/config_attribute/parallelism.rb +1 -1
  38. data/lib/kitchen/terraform/config_attribute/plugin_directory.rb +3 -3
  39. data/lib/kitchen/terraform/config_attribute/root_module_directory.rb +4 -4
  40. data/lib/kitchen/terraform/config_attribute/systems.rb +1 -1
  41. data/lib/kitchen/terraform/config_attribute/variable_files.rb +4 -4
  42. data/lib/kitchen/terraform/config_attribute/variables.rb +1 -1
  43. data/lib/kitchen/terraform/config_attribute/verify_version.rb +2 -2
  44. data/lib/kitchen/terraform/config_attribute_cacher.rb +27 -25
  45. data/lib/kitchen/terraform/config_attribute_definer.rb +37 -43
  46. data/lib/kitchen/terraform/config_attribute_type.rb +7 -5
  47. data/lib/kitchen/terraform/config_attribute_type/hash_of_symbols_and_strings.rb +32 -27
  48. data/lib/kitchen/terraform/config_attribute_type/integer.rb +4 -4
  49. data/lib/kitchen/terraform/config_predicates.rb +7 -5
  50. data/lib/kitchen/terraform/config_predicates/hash_of_symbols_and_strings.rb +6 -6
  51. data/lib/kitchen/terraform/config_schemas.rb +7 -5
  52. data/lib/kitchen/terraform/config_schemas/array_of_strings.rb +20 -13
  53. data/lib/kitchen/terraform/config_schemas/boolean.rb +16 -9
  54. data/lib/kitchen/terraform/config_schemas/optional_string.rb +20 -13
  55. data/lib/kitchen/terraform/config_schemas/string.rb +13 -7
  56. data/lib/kitchen/terraform/config_schemas/system.rb +38 -16
  57. data/lib/kitchen/terraform/config_schemas/systems.rb +5 -2
  58. data/lib/kitchen/terraform/configurable.rb +41 -21
  59. data/lib/kitchen/terraform/debug_logger.rb +1 -1
  60. data/lib/kitchen/terraform/deprecating.rb +7 -5
  61. data/lib/kitchen/terraform/driver.rb +23 -0
  62. data/lib/kitchen/terraform/driver/create.rb +120 -0
  63. data/lib/kitchen/terraform/driver/destroy.rb +169 -0
  64. data/lib/kitchen/terraform/error.rb +7 -5
  65. data/lib/kitchen/terraform/file_path_config_attribute_definer.rb +30 -27
  66. data/lib/kitchen/terraform/inspec.rb +3 -57
  67. data/lib/kitchen/terraform/inspec/fail_fast_with_hosts.rb +59 -0
  68. data/lib/kitchen/terraform/inspec/fail_slow_with_hosts.rb +69 -0
  69. data/lib/kitchen/terraform/inspec/without_hosts.rb +52 -0
  70. data/lib/kitchen/terraform/inspec_factory.rb +68 -0
  71. data/lib/kitchen/terraform/inspec_options_factory.rb +86 -0
  72. data/lib/kitchen/terraform/inspec_runner.rb +88 -0
  73. data/lib/kitchen/terraform/outputs_manager.rb +64 -0
  74. data/lib/kitchen/terraform/outputs_parser.rb +39 -0
  75. data/lib/kitchen/terraform/outputs_reader.rb +63 -0
  76. data/lib/kitchen/terraform/provisioner.rb +23 -0
  77. data/lib/kitchen/terraform/provisioner/converge.rb +206 -0
  78. data/lib/kitchen/terraform/raise.rb +23 -0
  79. data/lib/kitchen/terraform/raise/action_failed.rb +49 -0
  80. data/lib/kitchen/terraform/raise/client_error.rb +49 -0
  81. data/lib/kitchen/terraform/shell_out.rb +90 -59
  82. data/lib/kitchen/terraform/system.rb +63 -93
  83. data/lib/kitchen/terraform/system_attrs_inputs_resolver.rb +49 -0
  84. data/lib/kitchen/terraform/system_attrs_outputs_resolver.rb +80 -0
  85. data/lib/kitchen/terraform/system_bastion_host_resolver.rb +72 -0
  86. data/lib/kitchen/terraform/system_hosts_resolver.rb +39 -17
  87. data/lib/kitchen/terraform/system_inspec_map.rb +49 -0
  88. data/lib/kitchen/terraform/systems_verifier.rb +23 -0
  89. data/lib/kitchen/terraform/systems_verifier/fail_fast.rb +52 -0
  90. data/lib/kitchen/terraform/systems_verifier/fail_slow.rb +62 -0
  91. data/lib/kitchen/terraform/systems_verifier_factory.rb +50 -0
  92. data/lib/kitchen/terraform/unsupported_client_version_error.rb +26 -0
  93. data/lib/kitchen/terraform/variables_manager.rb +64 -0
  94. data/lib/kitchen/terraform/verify_version.rb +63 -20
  95. data/lib/kitchen/terraform/verify_version_rescue_strategy.rb +23 -0
  96. data/lib/kitchen/terraform/verify_version_rescue_strategy/permissive.rb +50 -0
  97. data/lib/kitchen/terraform/verify_version_rescue_strategy/strict.rb +47 -0
  98. data/lib/kitchen/terraform/verify_version_rescue_strategy_factory.rb +51 -0
  99. data/lib/kitchen/terraform/version.rb +59 -58
  100. data/lib/kitchen/terraform/version_verifier.rb +50 -0
  101. data/lib/kitchen/terraform/version_verifier_strategy.rb +25 -0
  102. data/lib/kitchen/terraform/version_verifier_strategy/supported.rb +33 -0
  103. data/lib/kitchen/terraform/version_verifier_strategy/unsupported.rb +34 -0
  104. data/lib/kitchen/terraform/version_verifier_strategy_factory.rb +50 -0
  105. data/lib/kitchen/verifier/terraform.rb +71 -62
  106. metadata +143 -80
  107. metadata.gz.sig +0 -0
  108. data/lib/kitchen/terraform/inspec_options_mapper.rb +0 -73
  109. data/lib/kitchen/terraform/inspec_with_hosts.rb +0 -50
  110. data/lib/kitchen/terraform/inspec_without_hosts.rb +0 -45
  111. data/lib/kitchen/terraform/system_attrs_resolver.rb +0 -60
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright 2016-2019 New Context, Inc.
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+ require "kitchen"
18
+
19
+ module Kitchen
20
+ module Terraform
21
+ # VersionVerifierStrategy is the module of objects which provide strategies for version verification.
22
+ module VersionVerifierStrategy
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright 2016-2019 New Context, Inc.
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+ require "kitchen"
18
+
19
+ module Kitchen
20
+ module Terraform
21
+ module VersionVerifierStrategy
22
+ # Supported is the class of objects which provide a strategy for supported Terraform client versions.
23
+ class Supported
24
+ # #call takes no action.
25
+ #
26
+ # @return [self]
27
+ def call
28
+ self
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright 2016-2019 New Context, Inc.
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+ require "kitchen/terraform/unsupported_client_version_error"
18
+
19
+ module Kitchen
20
+ module Terraform
21
+ module VersionVerifierStrategy
22
+ # Unsupported is the class of objects which provide a strategy for unsupported Terraform client versions.
23
+ class Unsupported
24
+ # #call fails the verification.
25
+ #
26
+ # @raise [Kitchen::Terraform::UnsupportedClientVersionError]
27
+ # @return [void]
28
+ def call
29
+ raise ::Kitchen::Terraform::UnsupportedClientVersionError, "The Terraform client version is unsupported."
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,50 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright 2016-2019 New Context, Inc.
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+ require "kitchen/terraform/version_verifier_strategy/supported"
18
+ require "kitchen/terraform/version_verifier_strategy/unsupported"
19
+
20
+ module Kitchen
21
+ module Terraform
22
+ # VersionVerifierStrategyFactory is the class of objects which build strategies for instances of VersionVerifier.
23
+ class VersionVerifierStrategyFactory
24
+ # #build creates a strategy.
25
+ #
26
+ # @param version [Gem::Version] the Terraform client version.
27
+ # @return [Kitchen::Terraform::VersionVerifierStrategy::Supported,
28
+ # Kitchen::Terraform::VersionVerifierStrategy::Unsupported]
29
+ def build(version:)
30
+ if version_requirement.satisfied_by? version
31
+ return ::Kitchen::Terraform::VersionVerifierStrategy::Supported.new
32
+ else
33
+ return ::Kitchen::Terraform::VersionVerifierStrategy::Unsupported.new
34
+ end
35
+ end
36
+
37
+ # #initialize prepares a new instance of the class.
38
+ #
39
+ # @param version_requirement [Gem::Requirement] the requirement for version support.
40
+ # @return [Kitchen::Terraform::VersionVerifierStrategyFactory]
41
+ def initialize(version_requirement:)
42
+ self.version_requirement = version_requirement
43
+ end
44
+
45
+ private
46
+
47
+ attr_accessor :version_requirement
48
+ end
49
+ end
50
+ end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright 2016 New Context Services, Inc.
3
+ # Copyright 2016-2019 New Context, Inc.
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
6
6
  # you may not use this file except in compliance with the License.
@@ -15,20 +15,23 @@
15
15
  # limitations under the License.
16
16
 
17
17
  require "kitchen"
18
+ require "kitchen/terraform/raise/action_failed"
19
+ require "kitchen/terraform/raise/client_error"
18
20
  require "kitchen/terraform/config_attribute/color"
19
21
  require "kitchen/terraform/config_attribute/fail_fast"
20
22
  require "kitchen/terraform/config_attribute/systems"
21
23
  require "kitchen/terraform/configurable"
22
- require "kitchen/terraform/error"
23
- require "kitchen/terraform/inspec_options_mapper"
24
+ require "kitchen/terraform/systems_verifier_factory"
25
+ require "kitchen/terraform/outputs_manager"
26
+ require "kitchen/terraform/variables_manager"
24
27
 
25
28
  module Kitchen
26
29
  # This namespace is defined by Kitchen.
27
30
  #
28
31
  # @see https://www.rubydoc.info/gems/test-kitchen/Kitchen/Verifier
29
32
  module Verifier
30
- # The verifier utilizes the {https://www.inspec.io/ InSpec infrastructure testing framework} to verify the behaviour and
31
- # state of resources in the Terraform state.
33
+ # The verifier utilizes the {https://www.inspec.io/ InSpec infrastructure testing framework} to verify the
34
+ # behaviour and state of resources in the Terraform state.
32
35
  #
33
36
  # === Commands
34
37
  #
@@ -40,10 +43,6 @@ module Kitchen
40
43
  # against the hosts of each system. The outputs of the Terraform state are retrieved and exposed as attributes to
41
44
  # the InSpec controls.
42
45
  #
43
- # ===== Retrieving the Terraform Output
44
- #
45
- # terraform output -json
46
- #
47
46
  # === Configuration Attributes
48
47
  #
49
48
  # The configuration attributes of the verifier control the behaviour of the InSpec runner. Within the
@@ -70,7 +69,15 @@ module Kitchen
70
69
  #
71
70
  # This class implements the interface of Kitchen::Configurable which requires the following Reek suppressions:
72
71
  # :reek:MissingSafeMethod { exclude: [ finalize_config!, load_needed_dependencies! ] }
72
+ #
73
+ # @example Describe the verify command
74
+ # kitchen help verify
75
+ # @example Verify a Test Kitchen instance
76
+ # kitchen verify default-ubuntu
77
+ # @version 2
73
78
  class Terraform < ::Kitchen::Verifier::Base
79
+ # UNSUPPORTED_BASE_ATTRIBUTES is the list of attributes inherited from
80
+ # Kitchen::Verifier::Base which are not supported by Kitchen::Verifier::Terraform.
74
81
  UNSUPPORTED_BASE_ATTRIBUTES = [
75
82
  :chef_omnibus_root,
76
83
  :command_prefix,
@@ -90,94 +97,96 @@ module Kitchen
90
97
  include ::Kitchen::Terraform::Configurable
91
98
  kitchen_verifier_api_version 2
92
99
 
93
- attr_reader :inputs, :outputs
100
+ attr_reader :outputs, :variables
94
101
 
95
102
  # The verifier enumerates through each host of each system and verifies the associated InSpec controls.
96
103
  #
97
104
  # @example
98
105
  # `kitchen verify suite-name`
99
- # @param _kitchen_state [::Hash] the mutable instance and verifier state.
100
- # @raise [::Kitchen::ActionFailed] if the result of the action is a failure.
106
+ # @param state [Hash] the mutable instance and verifier state.
107
+ # @raise [Kitchen::ActionFailed] if the result of the action is a failure.
101
108
  # @return [void]
102
- def call(_kitchen_state)
103
- load_variables
109
+ def call(state)
110
+ load_variables state: state
111
+ load_outputs state: state
104
112
  verify_systems
105
- if !error_messages.empty?
106
- raise ::Kitchen::ActionFailed, error_messages.join("\n\n")
107
- end
108
- rescue ::Kitchen::Terraform::Error => error
109
- raise ::Kitchen::ActionFailed, error.message
113
+ rescue => error
114
+ action_failed.call message: error.message
110
115
  end
111
116
 
112
117
  # doctor checks the system and configuration for common errors.
113
118
  #
114
- # @param _kitchen_state [::Hash] the mutable Kitchen instance state.
119
+ # @param _state [Hash] the mutable Kitchen instance state.
115
120
  # @return [Boolean] +true+ if any errors are found; +false+ if no errors are found.
116
121
  # @see https://github.com/test-kitchen/test-kitchen/blob/v1.21.2/lib/kitchen/verifier/base.rb#L85-L91
117
- def doctor(_kitchen_state)
122
+ def doctor(_state)
118
123
  false
119
124
  end
120
125
 
121
- private
122
-
123
- attr_accessor :inspec_options_mapper, :error_messages
124
- attr_writer :inputs, :outputs
125
-
126
- def handle_error(message:)
127
- if config_fail_fast
128
- raise ::Kitchen::Terraform::Error, message
129
- else
130
- logger.error message
131
- error_messages.push message
132
- end
126
+ # #initialize prepares a new instance of the class.
127
+ #
128
+ # @param config [Hash] the verifier configuration.
129
+ # @return [Kitchen::Verifier::Terraform]
130
+ def initialize(config = {})
131
+ init_config config
132
+ self.action_failed = ::Kitchen::Terraform::Raise::ActionFailed.new logger: logger
133
+ self.client_error = ::Kitchen::Terraform::Raise::ClientError.new logger: logger
134
+ self.outputs = {}
135
+ self.variables = {}
133
136
  end
134
137
 
135
- def load_variables
136
- instance.driver.retrieve_outputs do |outputs:|
137
- self.outputs.replace outputs
138
- end.retrieve_inputs do |inputs:|
139
- self.inputs.replace inputs
140
- end
141
- end
138
+ private
142
139
 
143
- def initialize(configuration = {})
144
- init_config configuration
145
- self.inspec_options_mapper = ::Kitchen::Terraform::InSpecOptionsMapper.new
146
- self.error_messages = []
147
- self.inputs = {}
148
- self.outputs = {}
140
+ attr_accessor :action_failed, :client_error, :outputs, :variables
141
+
142
+ def load_variables(state:)
143
+ logger.warn "Reading the Terraform input variables from the Kitchen instance state..."
144
+ ::Kitchen::Terraform::VariablesManager.new.load variables: variables, state: state
145
+ logger.warn "Finished reading the Terraform input variables from the Kitchen instance state."
149
146
  end
150
147
 
151
148
  # load_needed_dependencies! loads the InSpec libraries required to verify a Terraform state.
152
149
  #
153
- # @raise [::Kitchen::ClientError] if loading the InSpec libraries fails.
150
+ # @raise [Kitchen::ClientError] if loading the InSpec libraries fails.
154
151
  # @see https://github.com/test-kitchen/test-kitchen/blob/v1.21.2/lib/kitchen/configurable.rb#L252-L274
155
152
  def load_needed_dependencies!
156
- require "kitchen/terraform/inspec"
153
+ require "kitchen/terraform/inspec_runner"
157
154
  require "kitchen/terraform/system"
158
- ::Kitchen::Terraform::InSpec.logger = logger
155
+ ::Kitchen::Terraform::InSpecRunner.logger = logger
159
156
  rescue ::LoadError => load_error
160
- raise ::Kitchen::ClientError, load_error.message
157
+ client_error.call message: load_error.message
161
158
  end
162
159
 
163
- def system_inspec_options(system:)
164
- inspec_options_mapper.map(options: { "color" => config_color, "distinct_exit" => false }, system: system)
160
+ def load_outputs(state:)
161
+ logger.warn "Reading the Terraform output variables from the Kitchen instance state..."
162
+ ::Kitchen::Terraform::OutputsManager.new.load outputs: outputs, state: state
163
+ logger.warn "Finished reading the Terraform output variables from the Kitchen instance state."
165
164
  end
166
165
 
167
- def verify(system:)
168
- ::Kitchen::Terraform::System.new(
169
- mapping: { profile_locations: [::File.join(config.fetch(:test_base_path), instance.suite.name)] }
170
- .merge(system),
171
- ).verify(inputs: inputs, inspec_options: system_inspec_options(system: system), outputs: outputs)
172
- rescue => error
173
- handle_error message: error.message
166
+ def profile_locations
167
+ @profile_locations ||= [::File.join(config.fetch(:test_base_path), instance.suite.name)]
174
168
  end
175
169
 
176
- def verify_systems
177
- config_systems.each do |system|
178
- verify system: system
170
+ def systems
171
+ @systems ||= config_systems.map do |system|
172
+ ::Kitchen::Terraform::System.new(
173
+ configuration_attributes: { color: config_color, profile_locations: profile_locations }.merge(system),
174
+ logger: logger,
175
+ )
179
176
  end
180
177
  end
178
+
179
+ def systems_verifier
180
+ @systems_verifier ||= ::Kitchen::Terraform::SystemsVerifierFactory.new(fail_fast: config_fail_fast).build(
181
+ systems: systems,
182
+ )
183
+ end
184
+
185
+ def verify_systems
186
+ logger.warn "Verifying the systems..."
187
+ systems_verifier.verify outputs: outputs, variables: variables
188
+ logger.warn "Finished verifying the systems."
189
+ end
181
190
  end
182
191
  end
183
192
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kitchen-terraform
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.1.1
4
+ version: 5.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aaron Lane
@@ -21,48 +21,63 @@ authors:
21
21
  - curleighbraces
22
22
  - Austin Heiman
23
23
  - Gary Foster
24
+ - Ed Bartholomew
24
25
  autorequire:
25
26
  bindir: bin
26
27
  cert_chain:
27
28
  - |
28
29
  -----BEGIN CERTIFICATE-----
29
- MIIGRjCCBC6gAwIBAgIJAN/KOTg/B0PKMA0GCSqGSIb3DQEBCwUAMIG3MQswCQYD
30
- VQQGEwJVUzELMAkGA1UECAwCQ0ExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xIzAh
31
- BgNVBAoMGk5ldyBDb250ZXh0IFNlcnZpY2VzLCBJbmMuMRowGAYDVQQLDBFLaXRj
32
- aGVuLVRlcnJhZm9ybTERMA8GA1UEAwwIUnVieUdlbXMxLzAtBgkqhkiG9w0BCQEW
33
- IGtpdGNoZW4tdGVycmFmb3JtQG5ld2NvbnRleHQuY29tMB4XDTE4MTIyOTE4MTQz
34
- M1oXDTE5MTIyOTE4MTQzM1owgbcxCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJDQTEW
35
- MBQGA1UEBwwNU2FuIEZyYW5jaXNjbzEjMCEGA1UECgwaTmV3IENvbnRleHQgU2Vy
36
- dmljZXMsIEluYy4xGjAYBgNVBAsMEUtpdGNoZW4tVGVycmFmb3JtMREwDwYDVQQD
37
- DAhSdWJ5R2VtczEvMC0GCSqGSIb3DQEJARYga2l0Y2hlbi10ZXJyYWZvcm1AbmV3
38
- Y29udGV4dC5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCv75V5
39
- xAhnLBzFECcI17APFWYd6KAGFIlmgkbca1o+tkpWQF4qPoIooXF34tp8M7LKJLYz
40
- B8UCAx1iXl7Tkm/FiayZ6VgD65ZSl1BxcWoEgkU2rjp0IgB4YCYmSOGhIByBsKlX
41
- mCHN5P+IdfsEIpSZ7CfFhuz5GpLUZPiQW9PaRkeoN84epr6OpP1WmTDLN9XnrMZW
42
- cpgGpWppPsOqh1tu4rWR43l26k5YjFillRQPGe0I/snv0aHq0lBlJG1s1h4CBTQR
43
- q22p7S43QV89RjuQDnKoiaAdHBF2xNyhuTKdJ0xSMXUF8VCSZo+o+Wr1nDYtsGEy
44
- ZUO5/5Vqf+q9yaXwub9bWSoi+ltHiclSh/BuQVuISvvpKpfV6nKRwtEMrgAbYzaa
45
- x/91zjGYxzUHc8wPN9HUhk4MidL5t+TROg/GiOX4ub5X5K4X0veSvfsXz5sHmySt
46
- SsDVg3ksq/i9l5ERI04jI15bM8DO3CBfQDdbONPtLYQUov4gd+gMA/lZ1h23b730
47
- tokcTnE+VvVYEklgA4rDDMmNT9xaPMorvbWOxBlPuETfhAutwspXD9jhiHUxvEcW
48
- zXk1sbAwjpIFJD/RTo70sfSVTCC2TZry8VWmvrYOVplKLPNnbxgw/Fs6SpXdAzkx
49
- RIXfZA4fK114ktcnTFj6zHtqk2zujmKrMs1qWQIDAQABo1MwUTAdBgNVHQ4EFgQU
50
- wbZDGwjRn9wkb7pJVh61w4LZz2wwHwYDVR0jBBgwFoAUwbZDGwjRn9wkb7pJVh61
51
- w4LZz2wwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAINgv/Q0x
52
- V+sQQ3k9PD0bn8LHxuhHXqg/74VvOe1lRMAo23yyzhxt266YIYUS/gswpUv4sSPq
53
- naQb3F4BOS/MuErS8fVPelPqyjb/31aLAri/Ze7BYLJch7rcan+Fj+gDa4X9C6F4
54
- uLxOjFLP48ZyHlihVtQ5/eGXbjKrkRKhZsMfq9PX15doNmXR20cCNTuPu0Q6AnCg
55
- 4vZwuPDupwJ31OQ4RSkFJ4E7131Q1dG7NkY2rZUM4N4rhcilYHbCNF7WSLLje7Zb
56
- KJfo3dCd5FCCHNPIcjjDjtdFuPRZT8HLgJejew2tP3LQW/2b0LaLDpGZf+EaaymI
57
- mFgszSQ8a4fC7SsHWOfNBn8O79rfyp8u+v2IYxa+6dDimpGesK+FmOmDVG4S2Qeg
58
- NJe02o0QRePOOaIXLmp9CjUN0KRRJHTOWPKgkU1TVxVPvX/4R4B421McjlfLuMgo
59
- LTJJaKnieViDrlLGkYE0JGxEHXNvwA7JcBBaKFctUOig9RVJtlqZJqU1iu9lj+Wk
60
- Tp0eCqWr0dy8uZBSPlRKsiQJsF32Ol2YZuAZF8UuPsgmxP38palsFeZziMd+tAp6
61
- XAjP/LERlXAwM+NCUycJw7BZMn7L2wIdnq6Le1rL6VJS17CZt2heuRtsF+3g0egR
62
- x97GmUumeM67PGeVodlIV65tdXrdlqKlHcE=
30
+ MIIGRTCCBC2gAwIBAgIUDVOj6ozVX0NsmofarEVN5XHDDOwwDQYJKoZIhvcNAQEL
31
+ BQAwgbExCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJDQTEWMBQGA1UEBwwNU2FuIEZy
32
+ YW5jaXNjbzEaMBgGA1UECgwRTmV3IENvbnRleHQsIEluYy4xFDASBgNVBAsMC0Vu
33
+ Z2luZWVyaW5nMRowGAYDVQQDDBFLaXRjaGVuLVRlcnJhZm9ybTEvMC0GCSqGSIb3
34
+ DQEJARYga2l0Y2hlbi10ZXJyYWZvcm1AbmV3Y29udGV4dC5jb20wHhcNMjAwMjI4
35
+ MjEwNzUxWhcNMzAwMjI1MjEwNzUxWjCBsTELMAkGA1UEBhMCVVMxCzAJBgNVBAgM
36
+ AkNBMRYwFAYDVQQHDA1TYW4gRnJhbmNpc2NvMRowGAYDVQQKDBFOZXcgQ29udGV4
37
+ dCwgSW5jLjEUMBIGA1UECwwLRW5naW5lZXJpbmcxGjAYBgNVBAMMEUtpdGNoZW4t
38
+ VGVycmFmb3JtMS8wLQYJKoZIhvcNAQkBFiBraXRjaGVuLXRlcnJhZm9ybUBuZXdj
39
+ b250ZXh0LmNvbTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK/vlXnE
40
+ CGcsHMUQJwjXsA8VZh3ooAYUiWaCRtxrWj62SlZAXio+giihcXfi2nwzssoktjMH
41
+ xQIDHWJeXtOSb8WJrJnpWAPrllKXUHFxagSCRTauOnQiAHhgJiZI4aEgHIGwqVeY
42
+ Ic3k/4h1+wQilJnsJ8WG7PkaktRk+JBb09pGR6g3zh6mvo6k/VaZMMs31eesxlZy
43
+ mAalamk+w6qHW27itZHjeXbqTliMWKWVFA8Z7Qj+ye/RoerSUGUkbWzWHgIFNBGr
44
+ bantLjdBXz1GO5AOcqiJoB0cEXbE3KG5Mp0nTFIxdQXxUJJmj6j5avWcNi2wYTJl
45
+ Q7n/lWp/6r3JpfC5v1tZKiL6W0eJyVKH8G5BW4hK++kql9XqcpHC0QyuABtjNprH
46
+ /3XOMZjHNQdzzA830dSGTgyJ0vm35NE6D8aI5fi5vlfkrhfS95K9+xfPmwebJK1K
47
+ wNWDeSyr+L2XkREjTiMjXlszwM7cIF9AN1s40+0thBSi/iB36AwD+VnWHbdvvfS2
48
+ iRxOcT5W9VgSSWADisMMyY1P3Fo8yiu9tY7EGU+4RN+EC63CylcP2OGIdTG8RxbN
49
+ eTWxsDCOkgUkP9FOjvSx9JVMILZNmvLxVaa+tg5WmUos82dvGDD8WzpKld0DOTFE
50
+ hd9kDh8rXXiS1ydMWPrMe2qTbO6OYqsyzWpZAgMBAAGjUzBRMB0GA1UdDgQWBBTB
51
+ tkMbCNGf3CRvuklWHrXDgtnPbDAfBgNVHSMEGDAWgBTBtkMbCNGf3CRvuklWHrXD
52
+ gtnPbDAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4ICAQBJnyYE2KZC
53
+ 73dnPcx8YbNthZh5TkebxhLn+Wxx5wUZGcwv6/DEM9SSQJK6el1iaWEzbuJcJvCn
54
+ 5o0YSjWtU2smP2QVUFHVZlX8Hbzxc4vyBkc05WDIjRrJFdPCfeQvJiax07HqF6p7
55
+ JEHSvHgURDo3BmeV3Ci+B7qiCAgk/sccUDjs8krKHbt5IRyNsp55aLnfwy+PZZrY
56
+ 1v7GN4nUGEMCdFJVHKXLJ5gj46D3NXSf7jc4FAQmNi0DIqUy0vQ+hlU8gBE2ZiCu
57
+ d158xC4VHkmIovIyfZzJAML737AuXrNECzzYpx4kw5/V/7RaCVBN6N4oLWoudC1J
58
+ K9xgEqxJ8NQpv52J4Pdhs6IpDgZMYZAgqgGIWdlHjyK3AwU+8y39HFNDDNqZF829
59
+ FgidapRf+GUzQVlVWZQSafnIyK6KFJto17Wb+tDGaW/vWJd5quWl1mQYhxAxkPt0
60
+ CExwtLXxjmP/6xXCUxigAwe1ZIY2+4jifzrW5SXdTxbANGTq8pdjPy0PER62oKjY
61
+ R3eYdlcTwPffSwu/BJA10g0L3eLFcR++7x2Dg+G5uqGnqUob698Kn5i9pa7Ld+CE
62
+ JH4yGDzVEYaZHaohSDcYuGLK6OQylPu7oM75S+TNLWseDIT8bWgQk6NelVjtQQ2Q
63
+ XSbgfu863jyey/0qO01cUo3+iTqzl85cWg==
63
64
  -----END CERTIFICATE-----
64
- date: 2019-08-29 00:00:00.000000000 Z
65
+ date: 2020-12-08 00:00:00.000000000 Z
65
66
  dependencies:
67
+ - !ruby/object:Gem::Dependency
68
+ name: bundler
69
+ requirement: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - "~>"
72
+ - !ruby/object:Gem::Version
73
+ version: '2.0'
74
+ type: :development
75
+ prerelease: false
76
+ version_requirements: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - "~>"
79
+ - !ruby/object:Gem::Version
80
+ version: '2.0'
66
81
  - !ruby/object:Gem::Dependency
67
82
  name: guard-bundler
68
83
  requirement: !ruby/object:Gem::Requirement
@@ -190,103 +205,103 @@ dependencies:
190
205
  - !ruby/object:Gem::Version
191
206
  version: '4.2'
192
207
  - !ruby/object:Gem::Dependency
193
- name: mini_racer
208
+ name: rspec
194
209
  requirement: !ruby/object:Gem::Requirement
195
210
  requirements:
196
211
  - - "~>"
197
212
  - !ruby/object:Gem::Version
198
- version: 0.2.0
213
+ version: '3.4'
199
214
  type: :development
200
215
  prerelease: false
201
216
  version_requirements: !ruby/object:Gem::Requirement
202
217
  requirements:
203
218
  - - "~>"
204
219
  - !ruby/object:Gem::Version
205
- version: 0.2.0
220
+ version: '3.4'
206
221
  - !ruby/object:Gem::Dependency
207
- name: pry-coolline
222
+ name: rufo
208
223
  requirement: !ruby/object:Gem::Requirement
209
224
  requirements:
210
225
  - - "~>"
211
226
  - !ruby/object:Gem::Version
212
- version: '0.2'
227
+ version: '0.7'
213
228
  type: :development
214
229
  prerelease: false
215
230
  version_requirements: !ruby/object:Gem::Requirement
216
231
  requirements:
217
232
  - - "~>"
218
233
  - !ruby/object:Gem::Version
219
- version: '0.2'
234
+ version: '0.7'
220
235
  - !ruby/object:Gem::Dependency
221
- name: pry
236
+ name: simplecov
222
237
  requirement: !ruby/object:Gem::Requirement
223
238
  requirements:
224
239
  - - "~>"
225
240
  - !ruby/object:Gem::Version
226
- version: '0.10'
241
+ version: 0.16.1
227
242
  type: :development
228
243
  prerelease: false
229
244
  version_requirements: !ruby/object:Gem::Requirement
230
245
  requirements:
231
246
  - - "~>"
232
247
  - !ruby/object:Gem::Version
233
- version: '0.10'
248
+ version: 0.16.1
234
249
  - !ruby/object:Gem::Dependency
235
- name: rspec
250
+ name: travis
236
251
  requirement: !ruby/object:Gem::Requirement
237
252
  requirements:
238
253
  - - "~>"
239
254
  - !ruby/object:Gem::Version
240
- version: '3.4'
255
+ version: '1.8'
241
256
  type: :development
242
257
  prerelease: false
243
258
  version_requirements: !ruby/object:Gem::Requirement
244
259
  requirements:
245
260
  - - "~>"
246
261
  - !ruby/object:Gem::Version
247
- version: '3.4'
262
+ version: '1.8'
248
263
  - !ruby/object:Gem::Dependency
249
- name: simplecov
264
+ name: yard
250
265
  requirement: !ruby/object:Gem::Requirement
251
266
  requirements:
252
267
  - - "~>"
253
268
  - !ruby/object:Gem::Version
254
- version: 0.16.1
269
+ version: '0.9'
255
270
  type: :development
256
271
  prerelease: false
257
272
  version_requirements: !ruby/object:Gem::Requirement
258
273
  requirements:
259
274
  - - "~>"
260
275
  - !ruby/object:Gem::Version
261
- version: 0.16.1
276
+ version: '0.9'
262
277
  - !ruby/object:Gem::Dependency
263
- name: travis
278
+ name: reek
264
279
  requirement: !ruby/object:Gem::Requirement
265
280
  requirements:
266
281
  - - "~>"
267
282
  - !ruby/object:Gem::Version
268
- version: '1.8'
283
+ version: 6.0.2
269
284
  type: :development
270
285
  prerelease: false
271
286
  version_requirements: !ruby/object:Gem::Requirement
272
287
  requirements:
273
288
  - - "~>"
274
289
  - !ruby/object:Gem::Version
275
- version: '1.8'
290
+ version: 6.0.2
276
291
  - !ruby/object:Gem::Dependency
277
- name: yard
292
+ name: delegate
278
293
  requirement: !ruby/object:Gem::Requirement
279
294
  requirements:
280
295
  - - "~>"
281
296
  - !ruby/object:Gem::Version
282
- version: '0.9'
283
- type: :development
297
+ version: 0.1.0
298
+ type: :runtime
284
299
  prerelease: false
285
300
  version_requirements: !ruby/object:Gem::Requirement
286
301
  requirements:
287
302
  - - "~>"
288
303
  - !ruby/object:Gem::Version
289
- version: '0.9'
304
+ version: 0.1.0
290
305
  - !ruby/object:Gem::Dependency
291
306
  name: dry-validation
292
307
  requirement: !ruby/object:Gem::Requirement
@@ -301,6 +316,20 @@ dependencies:
301
316
  - - "~>"
302
317
  - !ruby/object:Gem::Version
303
318
  version: '0.13'
319
+ - !ruby/object:Gem::Dependency
320
+ name: mixlib-shellout
321
+ requirement: !ruby/object:Gem::Requirement
322
+ requirements:
323
+ - - "~>"
324
+ - !ruby/object:Gem::Version
325
+ version: '3.0'
326
+ type: :runtime
327
+ prerelease: false
328
+ version_requirements: !ruby/object:Gem::Requirement
329
+ requirements:
330
+ - - "~>"
331
+ - !ruby/object:Gem::Version
332
+ version: '3.0'
304
333
  - !ruby/object:Gem::Dependency
305
334
  name: inspec
306
335
  requirement: !ruby/object:Gem::Requirement
@@ -335,20 +364,6 @@ dependencies:
335
364
  - - "~>"
336
365
  - !ruby/object:Gem::Version
337
366
  version: '2.2'
338
- - !ruby/object:Gem::Dependency
339
- name: mixlib-shellout
340
- requirement: !ruby/object:Gem::Requirement
341
- requirements:
342
- - - "~>"
343
- - !ruby/object:Gem::Version
344
- version: '2.2'
345
- type: :runtime
346
- prerelease: false
347
- version_requirements: !ruby/object:Gem::Requirement
348
- requirements:
349
- - - "~>"
350
- - !ruby/object:Gem::Version
351
- version: '2.2'
352
367
  - !ruby/object:Gem::Dependency
353
368
  name: test-kitchen
354
369
  requirement: !ruby/object:Gem::Requirement
@@ -391,8 +406,25 @@ files:
391
406
  - lib/kitchen/terraform.rb
392
407
  - lib/kitchen/terraform/breaking.rb
393
408
  - lib/kitchen/terraform/command.rb
409
+ - lib/kitchen/terraform/command/apply.rb
410
+ - lib/kitchen/terraform/command/destroy.rb
411
+ - lib/kitchen/terraform/command/get.rb
412
+ - lib/kitchen/terraform/command/init.rb
394
413
  - lib/kitchen/terraform/command/output.rb
414
+ - lib/kitchen/terraform/command/validate.rb
395
415
  - lib/kitchen/terraform/command/version.rb
416
+ - lib/kitchen/terraform/command/workspace_delete.rb
417
+ - lib/kitchen/terraform/command/workspace_new.rb
418
+ - lib/kitchen/terraform/command/workspace_select.rb
419
+ - lib/kitchen/terraform/command_executor.rb
420
+ - lib/kitchen/terraform/command_flag.rb
421
+ - lib/kitchen/terraform/command_flag/backend_config.rb
422
+ - lib/kitchen/terraform/command_flag/color.rb
423
+ - lib/kitchen/terraform/command_flag/lock_timeout.rb
424
+ - lib/kitchen/terraform/command_flag/plugin_dir.rb
425
+ - lib/kitchen/terraform/command_flag/upgrade.rb
426
+ - lib/kitchen/terraform/command_flag/var.rb
427
+ - lib/kitchen/terraform/command_flag/var_file.rb
396
428
  - lib/kitchen/terraform/config_attribute.rb
397
429
  - lib/kitchen/terraform/config_attribute/backend_configurations.rb
398
430
  - lib/kitchen/terraform/config_attribute/client.rb
@@ -425,18 +457,50 @@ files:
425
457
  - lib/kitchen/terraform/configurable.rb
426
458
  - lib/kitchen/terraform/debug_logger.rb
427
459
  - lib/kitchen/terraform/deprecating.rb
460
+ - lib/kitchen/terraform/driver.rb
461
+ - lib/kitchen/terraform/driver/create.rb
462
+ - lib/kitchen/terraform/driver/destroy.rb
428
463
  - lib/kitchen/terraform/error.rb
429
464
  - lib/kitchen/terraform/file_path_config_attribute_definer.rb
430
465
  - lib/kitchen/terraform/inspec.rb
431
- - lib/kitchen/terraform/inspec_options_mapper.rb
432
- - lib/kitchen/terraform/inspec_with_hosts.rb
433
- - lib/kitchen/terraform/inspec_without_hosts.rb
466
+ - lib/kitchen/terraform/inspec/fail_fast_with_hosts.rb
467
+ - lib/kitchen/terraform/inspec/fail_slow_with_hosts.rb
468
+ - lib/kitchen/terraform/inspec/without_hosts.rb
469
+ - lib/kitchen/terraform/inspec_factory.rb
470
+ - lib/kitchen/terraform/inspec_options_factory.rb
471
+ - lib/kitchen/terraform/inspec_runner.rb
472
+ - lib/kitchen/terraform/outputs_manager.rb
473
+ - lib/kitchen/terraform/outputs_parser.rb
474
+ - lib/kitchen/terraform/outputs_reader.rb
475
+ - lib/kitchen/terraform/provisioner.rb
476
+ - lib/kitchen/terraform/provisioner/converge.rb
477
+ - lib/kitchen/terraform/raise.rb
478
+ - lib/kitchen/terraform/raise/action_failed.rb
479
+ - lib/kitchen/terraform/raise/client_error.rb
434
480
  - lib/kitchen/terraform/shell_out.rb
435
481
  - lib/kitchen/terraform/system.rb
436
- - lib/kitchen/terraform/system_attrs_resolver.rb
482
+ - lib/kitchen/terraform/system_attrs_inputs_resolver.rb
483
+ - lib/kitchen/terraform/system_attrs_outputs_resolver.rb
484
+ - lib/kitchen/terraform/system_bastion_host_resolver.rb
437
485
  - lib/kitchen/terraform/system_hosts_resolver.rb
486
+ - lib/kitchen/terraform/system_inspec_map.rb
487
+ - lib/kitchen/terraform/systems_verifier.rb
488
+ - lib/kitchen/terraform/systems_verifier/fail_fast.rb
489
+ - lib/kitchen/terraform/systems_verifier/fail_slow.rb
490
+ - lib/kitchen/terraform/systems_verifier_factory.rb
491
+ - lib/kitchen/terraform/unsupported_client_version_error.rb
492
+ - lib/kitchen/terraform/variables_manager.rb
438
493
  - lib/kitchen/terraform/verify_version.rb
494
+ - lib/kitchen/terraform/verify_version_rescue_strategy.rb
495
+ - lib/kitchen/terraform/verify_version_rescue_strategy/permissive.rb
496
+ - lib/kitchen/terraform/verify_version_rescue_strategy/strict.rb
497
+ - lib/kitchen/terraform/verify_version_rescue_strategy_factory.rb
439
498
  - lib/kitchen/terraform/version.rb
499
+ - lib/kitchen/terraform/version_verifier.rb
500
+ - lib/kitchen/terraform/version_verifier_strategy.rb
501
+ - lib/kitchen/terraform/version_verifier_strategy/supported.rb
502
+ - lib/kitchen/terraform/version_verifier_strategy/unsupported.rb
503
+ - lib/kitchen/terraform/version_verifier_strategy_factory.rb
440
504
  - lib/kitchen/verifier/terraform.rb
441
505
  homepage: https://newcontext-oss.github.io/kitchen-terraform/
442
506
  licenses:
@@ -453,16 +517,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
453
517
  version: '2.4'
454
518
  - - "<"
455
519
  - !ruby/object:Gem::Version
456
- version: '2.7'
520
+ version: '2.8'
457
521
  required_rubygems_version: !ruby/object:Gem::Requirement
458
522
  requirements:
459
523
  - - ">="
460
524
  - !ruby/object:Gem::Version
461
525
  version: '0'
462
526
  requirements:
463
- - Terraform >= v0.11.4, < v0.13.0
464
- rubyforge_project:
465
- rubygems_version: 2.7.7
527
+ - Terraform >= v0.11.4, < v0.15.0
528
+ rubygems_version: 3.1.4
466
529
  signing_key:
467
530
  specification_version: 4
468
531
  summary: Test Kitchen plugins for testing Terraform configuration