kitchen-terraform 5.0.0 → 5.4.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 +34 -14
  5. data/lib/kitchen/driver/terraform.rb +196 -514
  6. data/lib/kitchen/provisioner/terraform.rb +88 -70
  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 +86 -66
  106. metadata +146 -63
  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,103 +69,124 @@ 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! ] }
73
- class Terraform
74
- include ::Kitchen::Configurable
75
- include ::Kitchen::Logging
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
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.
81
+ UNSUPPORTED_BASE_ATTRIBUTES = [
82
+ :chef_omnibus_root,
83
+ :command_prefix,
84
+ :http_proxy,
85
+ :https_proxy,
86
+ :ftp_proxy,
87
+ :root_path,
88
+ :sudo,
89
+ :sudo_command,
90
+ ]
91
+ defaults.delete_if do |key|
92
+ UNSUPPORTED_BASE_ATTRIBUTES.include? key
93
+ end
76
94
  include ::Kitchen::Terraform::ConfigAttribute::Color
77
95
  include ::Kitchen::Terraform::ConfigAttribute::FailFast
78
96
  include ::Kitchen::Terraform::ConfigAttribute::Systems
79
97
  include ::Kitchen::Terraform::Configurable
80
- @api_version = 2
98
+ kitchen_verifier_api_version 2
81
99
 
82
- attr_reader :inputs, :outputs
100
+ attr_reader :outputs, :variables
83
101
 
84
102
  # The verifier enumerates through each host of each system and verifies the associated InSpec controls.
85
103
  #
86
104
  # @example
87
105
  # `kitchen verify suite-name`
88
- # @param _kitchen_state [::Hash] the mutable instance and verifier state.
89
- # @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.
90
108
  # @return [void]
91
- def call(_kitchen_state)
92
- load_variables
109
+ def call(state)
110
+ load_variables state: state
111
+ load_outputs state: state
93
112
  verify_systems
94
- if !error_messages.empty?
95
- raise ::Kitchen::ActionFailed, error_messages.join("\n\n")
96
- end
97
- rescue ::Kitchen::Terraform::Error => error
98
- raise ::Kitchen::ActionFailed, error.message
113
+ rescue => error
114
+ action_failed.call message: error.message
99
115
  end
100
116
 
101
117
  # doctor checks the system and configuration for common errors.
102
118
  #
103
- # @param _kitchen_state [::Hash] the mutable Kitchen instance state.
119
+ # @param _state [Hash] the mutable Kitchen instance state.
104
120
  # @return [Boolean] +true+ if any errors are found; +false+ if no errors are found.
105
121
  # @see https://github.com/test-kitchen/test-kitchen/blob/v1.21.2/lib/kitchen/verifier/base.rb#L85-L91
106
- def doctor(_kitchen_state)
122
+ def doctor(_state)
107
123
  false
108
124
  end
109
125
 
110
- private
111
-
112
- attr_accessor :inspec_options_mapper, :error_messages
113
- attr_writer :inputs, :outputs
114
-
115
- def handle_error(message:)
116
- if config_fail_fast
117
- raise ::Kitchen::Terraform::Error, message
118
- else
119
- logger.error message
120
- error_messages.push message
121
- 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 = {}
122
136
  end
123
137
 
124
- def load_variables
125
- instance.driver.retrieve_outputs do |outputs:|
126
- self.outputs.replace outputs
127
- end.retrieve_inputs do |inputs:|
128
- self.inputs.replace inputs
129
- end
130
- end
138
+ private
131
139
 
132
- def initialize(configuration = {})
133
- init_config configuration
134
- self.inspec_options_mapper = ::Kitchen::Terraform::InSpecOptionsMapper.new
135
- self.error_messages = []
136
- self.inputs = {}
137
- 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."
138
146
  end
139
147
 
140
148
  # load_needed_dependencies! loads the InSpec libraries required to verify a Terraform state.
141
149
  #
142
- # @raise [::Kitchen::ClientError] if loading the InSpec libraries fails.
150
+ # @raise [Kitchen::ClientError] if loading the InSpec libraries fails.
143
151
  # @see https://github.com/test-kitchen/test-kitchen/blob/v1.21.2/lib/kitchen/configurable.rb#L252-L274
144
152
  def load_needed_dependencies!
145
- require "kitchen/terraform/inspec"
153
+ require "kitchen/terraform/inspec_runner"
146
154
  require "kitchen/terraform/system"
147
- ::Kitchen::Terraform::InSpec.logger = logger
155
+ ::Kitchen::Terraform::InSpecRunner.logger = logger
148
156
  rescue ::LoadError => load_error
149
- raise ::Kitchen::ClientError, load_error.message
157
+ client_error.call message: load_error.message
150
158
  end
151
159
 
152
- def system_inspec_options(system:)
153
- 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 varibales from the Kitchen instance state."
154
164
  end
155
165
 
156
- def verify(system:)
157
- ::Kitchen::Terraform::System.new(
158
- mapping: { profile_locations: [::File.join(config.fetch(:test_base_path), instance.suite.name)] }
159
- .merge(system),
160
- ).verify(inputs: inputs, inspec_options: system_inspec_options(system: system), outputs: outputs)
161
- rescue => error
162
- handle_error message: error.message
166
+ def profile_locations
167
+ @profile_locations ||= [::File.join(config.fetch(:test_base_path), instance.suite.name)]
163
168
  end
164
169
 
165
- def verify_systems
166
- config_systems.each do |system|
167
- 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
+ )
168
176
  end
169
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
170
190
  end
171
191
  end
172
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.0.0
4
+ version: 5.4.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-06-07 00:00:00.000000000 Z
65
+ date: 2020-06-01 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
@@ -231,6 +246,20 @@ dependencies:
231
246
  - - "~>"
232
247
  - !ruby/object:Gem::Version
233
248
  version: '0.10'
249
+ - !ruby/object:Gem::Dependency
250
+ name: reek
251
+ requirement: !ruby/object:Gem::Requirement
252
+ requirements:
253
+ - - "~>"
254
+ - !ruby/object:Gem::Version
255
+ version: '5.5'
256
+ type: :development
257
+ prerelease: false
258
+ version_requirements: !ruby/object:Gem::Requirement
259
+ requirements:
260
+ - - "~>"
261
+ - !ruby/object:Gem::Version
262
+ version: '5.5'
234
263
  - !ruby/object:Gem::Dependency
235
264
  name: rspec
236
265
  requirement: !ruby/object:Gem::Requirement
@@ -245,6 +274,20 @@ dependencies:
245
274
  - - "~>"
246
275
  - !ruby/object:Gem::Version
247
276
  version: '3.4'
277
+ - !ruby/object:Gem::Dependency
278
+ name: rufo
279
+ requirement: !ruby/object:Gem::Requirement
280
+ requirements:
281
+ - - "~>"
282
+ - !ruby/object:Gem::Version
283
+ version: '0.7'
284
+ type: :development
285
+ prerelease: false
286
+ version_requirements: !ruby/object:Gem::Requirement
287
+ requirements:
288
+ - - "~>"
289
+ - !ruby/object:Gem::Version
290
+ version: '0.7'
248
291
  - !ruby/object:Gem::Dependency
249
292
  name: simplecov
250
293
  requirement: !ruby/object:Gem::Requirement
@@ -305,16 +348,22 @@ dependencies:
305
348
  name: inspec
306
349
  requirement: !ruby/object:Gem::Requirement
307
350
  requirements:
308
- - - "~>"
351
+ - - ">="
352
+ - !ruby/object:Gem::Version
353
+ version: '3'
354
+ - - "<"
309
355
  - !ruby/object:Gem::Version
310
- version: '4.0'
356
+ version: '5'
311
357
  type: :runtime
312
358
  prerelease: false
313
359
  version_requirements: !ruby/object:Gem::Requirement
314
360
  requirements:
315
- - - "~>"
361
+ - - ">="
316
362
  - !ruby/object:Gem::Version
317
- version: '4.0'
363
+ version: '3'
364
+ - - "<"
365
+ - !ruby/object:Gem::Version
366
+ version: '5'
318
367
  - !ruby/object:Gem::Dependency
319
368
  name: json
320
369
  requirement: !ruby/object:Gem::Requirement
@@ -335,28 +384,14 @@ dependencies:
335
384
  requirements:
336
385
  - - "~>"
337
386
  - !ruby/object:Gem::Version
338
- version: '2.2'
339
- type: :runtime
340
- prerelease: false
341
- version_requirements: !ruby/object:Gem::Requirement
342
- requirements:
343
- - - "~>"
344
- - !ruby/object:Gem::Version
345
- version: '2.2'
346
- - !ruby/object:Gem::Dependency
347
- name: rbnacl
348
- requirement: !ruby/object:Gem::Requirement
349
- requirements:
350
- - - "~>"
351
- - !ruby/object:Gem::Version
352
- version: '4.0'
387
+ version: '3.0'
353
388
  type: :runtime
354
389
  prerelease: false
355
390
  version_requirements: !ruby/object:Gem::Requirement
356
391
  requirements:
357
392
  - - "~>"
358
393
  - !ruby/object:Gem::Version
359
- version: '4.0'
394
+ version: '3.0'
360
395
  - !ruby/object:Gem::Dependency
361
396
  name: test-kitchen
362
397
  requirement: !ruby/object:Gem::Requirement
@@ -399,8 +434,25 @@ files:
399
434
  - lib/kitchen/terraform.rb
400
435
  - lib/kitchen/terraform/breaking.rb
401
436
  - lib/kitchen/terraform/command.rb
437
+ - lib/kitchen/terraform/command/apply.rb
438
+ - lib/kitchen/terraform/command/destroy.rb
439
+ - lib/kitchen/terraform/command/get.rb
440
+ - lib/kitchen/terraform/command/init.rb
402
441
  - lib/kitchen/terraform/command/output.rb
442
+ - lib/kitchen/terraform/command/validate.rb
403
443
  - lib/kitchen/terraform/command/version.rb
444
+ - lib/kitchen/terraform/command/workspace_delete.rb
445
+ - lib/kitchen/terraform/command/workspace_new.rb
446
+ - lib/kitchen/terraform/command/workspace_select.rb
447
+ - lib/kitchen/terraform/command_executor.rb
448
+ - lib/kitchen/terraform/command_flag.rb
449
+ - lib/kitchen/terraform/command_flag/backend_config.rb
450
+ - lib/kitchen/terraform/command_flag/color.rb
451
+ - lib/kitchen/terraform/command_flag/lock_timeout.rb
452
+ - lib/kitchen/terraform/command_flag/plugin_dir.rb
453
+ - lib/kitchen/terraform/command_flag/upgrade.rb
454
+ - lib/kitchen/terraform/command_flag/var.rb
455
+ - lib/kitchen/terraform/command_flag/var_file.rb
404
456
  - lib/kitchen/terraform/config_attribute.rb
405
457
  - lib/kitchen/terraform/config_attribute/backend_configurations.rb
406
458
  - lib/kitchen/terraform/config_attribute/client.rb
@@ -433,18 +485,50 @@ files:
433
485
  - lib/kitchen/terraform/configurable.rb
434
486
  - lib/kitchen/terraform/debug_logger.rb
435
487
  - lib/kitchen/terraform/deprecating.rb
488
+ - lib/kitchen/terraform/driver.rb
489
+ - lib/kitchen/terraform/driver/create.rb
490
+ - lib/kitchen/terraform/driver/destroy.rb
436
491
  - lib/kitchen/terraform/error.rb
437
492
  - lib/kitchen/terraform/file_path_config_attribute_definer.rb
438
493
  - lib/kitchen/terraform/inspec.rb
439
- - lib/kitchen/terraform/inspec_options_mapper.rb
440
- - lib/kitchen/terraform/inspec_with_hosts.rb
441
- - lib/kitchen/terraform/inspec_without_hosts.rb
494
+ - lib/kitchen/terraform/inspec/fail_fast_with_hosts.rb
495
+ - lib/kitchen/terraform/inspec/fail_slow_with_hosts.rb
496
+ - lib/kitchen/terraform/inspec/without_hosts.rb
497
+ - lib/kitchen/terraform/inspec_factory.rb
498
+ - lib/kitchen/terraform/inspec_options_factory.rb
499
+ - lib/kitchen/terraform/inspec_runner.rb
500
+ - lib/kitchen/terraform/outputs_manager.rb
501
+ - lib/kitchen/terraform/outputs_parser.rb
502
+ - lib/kitchen/terraform/outputs_reader.rb
503
+ - lib/kitchen/terraform/provisioner.rb
504
+ - lib/kitchen/terraform/provisioner/converge.rb
505
+ - lib/kitchen/terraform/raise.rb
506
+ - lib/kitchen/terraform/raise/action_failed.rb
507
+ - lib/kitchen/terraform/raise/client_error.rb
442
508
  - lib/kitchen/terraform/shell_out.rb
443
509
  - lib/kitchen/terraform/system.rb
444
- - lib/kitchen/terraform/system_attrs_resolver.rb
510
+ - lib/kitchen/terraform/system_attrs_inputs_resolver.rb
511
+ - lib/kitchen/terraform/system_attrs_outputs_resolver.rb
512
+ - lib/kitchen/terraform/system_bastion_host_resolver.rb
445
513
  - lib/kitchen/terraform/system_hosts_resolver.rb
514
+ - lib/kitchen/terraform/system_inspec_map.rb
515
+ - lib/kitchen/terraform/systems_verifier.rb
516
+ - lib/kitchen/terraform/systems_verifier/fail_fast.rb
517
+ - lib/kitchen/terraform/systems_verifier/fail_slow.rb
518
+ - lib/kitchen/terraform/systems_verifier_factory.rb
519
+ - lib/kitchen/terraform/unsupported_client_version_error.rb
520
+ - lib/kitchen/terraform/variables_manager.rb
446
521
  - lib/kitchen/terraform/verify_version.rb
522
+ - lib/kitchen/terraform/verify_version_rescue_strategy.rb
523
+ - lib/kitchen/terraform/verify_version_rescue_strategy/permissive.rb
524
+ - lib/kitchen/terraform/verify_version_rescue_strategy/strict.rb
525
+ - lib/kitchen/terraform/verify_version_rescue_strategy_factory.rb
447
526
  - lib/kitchen/terraform/version.rb
527
+ - lib/kitchen/terraform/version_verifier.rb
528
+ - lib/kitchen/terraform/version_verifier_strategy.rb
529
+ - lib/kitchen/terraform/version_verifier_strategy/supported.rb
530
+ - lib/kitchen/terraform/version_verifier_strategy/unsupported.rb
531
+ - lib/kitchen/terraform/version_verifier_strategy_factory.rb
448
532
  - lib/kitchen/verifier/terraform.rb
449
533
  homepage: https://newcontext-oss.github.io/kitchen-terraform/
450
534
  licenses:
@@ -461,7 +545,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
461
545
  version: '2.4'
462
546
  - - "<"
463
547
  - !ruby/object:Gem::Version
464
- version: '2.7'
548
+ version: '2.8'
465
549
  required_rubygems_version: !ruby/object:Gem::Requirement
466
550
  requirements:
467
551
  - - ">="
@@ -469,8 +553,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
469
553
  version: '0'
470
554
  requirements:
471
555
  - Terraform >= v0.11.4, < v0.13.0
472
- rubyforge_project:
473
- rubygems_version: 2.7.7
556
+ rubygems_version: 3.0.3
474
557
  signing_key:
475
558
  specification_version: 4
476
559
  summary: Test Kitchen plugins for testing Terraform configuration