kitchen-terraform 4.0.5 → 4.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/lib/kitchen/driver/terraform.rb +14 -10
- data/lib/kitchen/provisioner/terraform.rb +3 -15
- data/lib/kitchen/terraform/command/output.rb +3 -2
- data/lib/kitchen/terraform/version.rb +1 -1
- data/lib/kitchen/verifier/terraform.rb +14 -11
- metadata +2 -2
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a48b699368e638e6b55874c18b1880c0e44d86f07bd04efacc00e62f3ec70fe3
|
4
|
+
data.tar.gz: 79bb729336e5fa7344e586c169d3b11e0d177ff66f5a31d9cdab2f3fe1b4e0b4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3c141bf3e1608c70eca5a0b3c9b2ef7970f3eadca210eb8f4b07e13a85556d2ec35de82cc1fdb20eada1e62eca7bb5cc8c15d49697a648279891d571b1fc3a47
|
7
|
+
data.tar.gz: 2340ce65d820b817a5c63ace5d60825d802a3ff9e7af646bbca6e484022015f439e16d22583e7603160130bd9d3d8b177d387c286a4ff884d8da6df4e3a6428b
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
@@ -212,24 +212,15 @@ class ::Kitchen::Driver::Terraform < ::Kitchen::Driver::Base
|
|
212
212
|
include ::Kitchen::Terraform::Configurable
|
213
213
|
|
214
214
|
# Applies changes to the state by selecting the test workspace, updating the dependency modules, validating the root
|
215
|
-
# module, applying the state changes
|
215
|
+
# module, and applying the state changes.
|
216
216
|
#
|
217
217
|
# @raise [::Kitchen::Terraform::Error] if one of the steps fails.
|
218
218
|
# @return [void]
|
219
|
-
# @yieldparam output [::String] the state output.
|
220
219
|
def apply(&block)
|
221
220
|
run_workspace_select_instance
|
222
221
|
apply_run_get
|
223
222
|
apply_run_validate
|
224
223
|
apply_run_apply
|
225
|
-
::Kitchen::Terraform::Command::Output.run(
|
226
|
-
options: {
|
227
|
-
cwd: config_root_module_directory,
|
228
|
-
live_stream: logger,
|
229
|
-
timeout: config_command_timeout,
|
230
|
-
},
|
231
|
-
&block
|
232
|
-
)
|
233
224
|
end
|
234
225
|
|
235
226
|
# Creates a Test Kitchen instance by initializing the working directory and creating a test workspace.
|
@@ -266,6 +257,19 @@ class ::Kitchen::Driver::Terraform < ::Kitchen::Driver::Base
|
|
266
257
|
)
|
267
258
|
end
|
268
259
|
|
260
|
+
# Retrieves the Terraform state outputs.
|
261
|
+
#
|
262
|
+
# @raise [::Kitchen::Terraform::Error] if the retrieval fails.
|
263
|
+
# @return [void]
|
264
|
+
# @yieldparam output [::String] the state output.
|
265
|
+
def retrieve_outputs(&block)
|
266
|
+
::Kitchen::Terraform::Command::Output.run(
|
267
|
+
options: {
|
268
|
+
cwd: config_root_module_directory, live_stream: logger, timeout: config_command_timeout,
|
269
|
+
}, &block
|
270
|
+
)
|
271
|
+
end
|
272
|
+
|
269
273
|
# Verifies that the Terraform version available to the driver is supported.
|
270
274
|
#
|
271
275
|
# @raise [::Kitchen::UserError] if the version is not supported.
|
@@ -66,10 +66,6 @@ end
|
|
66
66
|
# [-var-file=<variable_files.first>...] \
|
67
67
|
# <directory>
|
68
68
|
#
|
69
|
-
# ===== Retrieving the Terraform Output
|
70
|
-
#
|
71
|
-
# terraform output -json
|
72
|
-
#
|
73
69
|
# === Configuration Attributes
|
74
70
|
#
|
75
71
|
# The provisioner has no configuration attributes, but the +provisioner+ mapping must be declared with the plugin name
|
@@ -90,18 +86,10 @@ class ::Kitchen::Provisioner::Terraform < ::Kitchen::Provisioner::Base
|
|
90
86
|
|
91
87
|
# Converges a Test Kitchen instance.
|
92
88
|
#
|
93
|
-
# @param
|
89
|
+
# @param _state [::Hash] the mutable instance and provisioner state.
|
94
90
|
# @raise [::Kitchen::ActionFailed] if the result of the action is a failure.
|
95
|
-
def call(
|
96
|
-
instance
|
97
|
-
.driver
|
98
|
-
.apply do |output:|
|
99
|
-
state
|
100
|
-
.store(
|
101
|
-
:kitchen_terraform_outputs,
|
102
|
-
output
|
103
|
-
)
|
104
|
-
end
|
91
|
+
def call(_state)
|
92
|
+
instance.driver.apply
|
105
93
|
rescue ::Kitchen::Terraform::Error => error
|
106
94
|
raise(
|
107
95
|
::Kitchen::ActionFailed,
|
@@ -15,6 +15,7 @@
|
|
15
15
|
# limitations under the License.
|
16
16
|
|
17
17
|
require "json"
|
18
|
+
require "kitchen"
|
18
19
|
require "kitchen/terraform/command"
|
19
20
|
require "kitchen/terraform/error"
|
20
21
|
require "kitchen/terraform/shell_out"
|
@@ -57,7 +58,7 @@ module ::Kitchen::Terraform::Command::Output
|
|
57
58
|
# @api private
|
58
59
|
def handle_kitchen_terraform(error:)
|
59
60
|
/no\\ outputs\\ defined/.match ::Regexp.escape error.to_s or raise error
|
60
|
-
yield
|
61
|
+
yield outputs: {}
|
61
62
|
end
|
62
63
|
|
63
64
|
# @api private
|
@@ -67,7 +68,7 @@ module ::Kitchen::Terraform::Command::Output
|
|
67
68
|
command: "output -json",
|
68
69
|
options: options,
|
69
70
|
) do |standard_output:|
|
70
|
-
yield
|
71
|
+
yield outputs: ::JSON.parse(standard_output)
|
71
72
|
end
|
72
73
|
end
|
73
74
|
end
|
@@ -37,8 +37,13 @@ module Kitchen
|
|
37
37
|
#
|
38
38
|
# ==== kitchen verify
|
39
39
|
#
|
40
|
-
# A
|
41
|
-
# against the hosts of each system.
|
40
|
+
# A Kitchen instance is verified by iterating through the systems and executing the associated InSpec controls
|
41
|
+
# against the hosts of each system. The outputs of the Terraform state are retrieved and exposed as attributes to
|
42
|
+
# the InSpec controls.
|
43
|
+
#
|
44
|
+
# ===== Retrieving the Terraform Output
|
45
|
+
#
|
46
|
+
# terraform output -json
|
42
47
|
#
|
43
48
|
# === Configuration Attributes
|
44
49
|
#
|
@@ -74,11 +79,11 @@ module Kitchen
|
|
74
79
|
#
|
75
80
|
# @example
|
76
81
|
# `kitchen verify suite-name`
|
77
|
-
# @param
|
82
|
+
# @param _kitchen_state [::Hash] the mutable instance and verifier state.
|
78
83
|
# @raise [::Kitchen::ActionFailed] if the result of the action is a failure.
|
79
84
|
# @return [void]
|
80
|
-
def call(
|
81
|
-
load_outputs
|
85
|
+
def call(_kitchen_state)
|
86
|
+
load_outputs
|
82
87
|
config_systems.each do |system|
|
83
88
|
verify system: system
|
84
89
|
end
|
@@ -127,12 +132,10 @@ module Kitchen
|
|
127
132
|
)
|
128
133
|
end
|
129
134
|
|
130
|
-
def load_outputs
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
"Loading Terraform outputs from the Kitchen state failed; this implies that the " \
|
135
|
-
"Kitchen-Terraform provisioner has not successfully converged\n#{key_error}"
|
135
|
+
def load_outputs
|
136
|
+
instance.driver.retrieve_outputs do |outputs:|
|
137
|
+
@outputs.replace ::Kitchen::Util.stringified_hash outputs
|
138
|
+
end
|
136
139
|
end
|
137
140
|
|
138
141
|
def initialize(configuration = {})
|
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: 4.0.
|
4
|
+
version: 4.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aaron Lane
|
@@ -57,7 +57,7 @@ cert_chain:
|
|
57
57
|
BVaY4PA1920fVWRcwrNEzxNhWvlAlNCU9d63OhVIo1rD46E5/+fuWunp4ZyEJHIX
|
58
58
|
lema55cN
|
59
59
|
-----END CERTIFICATE-----
|
60
|
-
date: 2018-12-
|
60
|
+
date: 2018-12-03 00:00:00.000000000 Z
|
61
61
|
dependencies:
|
62
62
|
- !ruby/object:Gem::Dependency
|
63
63
|
name: bundler
|
metadata.gz.sig
CHANGED
Binary file
|