kitchen-terraform 2.1.0 → 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/README.md +40 -43
- data/lib/kitchen/{terraform/client.rb → driver.rb} +4 -5
- data/lib/kitchen/driver/terraform.rb +367 -300
- data/lib/kitchen/provisioner.rb +22 -0
- data/lib/kitchen/provisioner/terraform.rb +70 -13
- data/lib/kitchen/terraform/client_version_verifier.rb +8 -3
- data/lib/kitchen/terraform/config_attribute.rb +0 -5
- data/lib/kitchen/terraform/config_attribute/backend_configurations.rb +21 -5
- data/lib/kitchen/terraform/config_attribute/color.rb +15 -4
- data/lib/kitchen/terraform/config_attribute/command_timeout.rb +7 -4
- data/lib/kitchen/terraform/config_attribute/groups.rb +63 -27
- data/lib/kitchen/terraform/config_attribute/lock_timeout.rb +16 -7
- data/lib/kitchen/terraform/config_attribute/parallelism.rb +12 -4
- data/lib/kitchen/terraform/config_attribute/plugin_directory.rb +13 -6
- data/lib/kitchen/terraform/config_attribute/{directory.rb → root_module_directory.rb} +9 -8
- data/lib/kitchen/terraform/config_attribute/variable_files.rb +19 -2
- data/lib/kitchen/terraform/config_attribute/variables.rb +18 -4
- data/lib/kitchen/terraform/configurable.rb +0 -19
- data/lib/kitchen/terraform/shell_out.rb +66 -0
- data/lib/kitchen/terraform/version.rb +1 -1
- data/lib/kitchen/verifier.rb +22 -0
- data/lib/kitchen/verifier/terraform.rb +116 -60
- data/lib/kitchen/verifier/terraform/configure_inspec_runner_attributes.rb +37 -24
- data/lib/kitchen/verifier/terraform/enumerate_groups_and_hostnames.rb +35 -17
- metadata +29 -12
- metadata.gz.sig +3 -2
- data/lib/kitchen/terraform/clear_directory.rb +0 -38
- data/lib/kitchen/terraform/client/command.rb +0 -168
- data/lib/kitchen/terraform/client/options.rb +0 -275
- data/lib/kitchen/terraform/config_attribute/state.rb +0 -55
- data/lib/kitchen/terraform/config_attribute/verify_plugins.rb +0 -52
- data/lib/kitchen/terraform/create_directories.rb +0 -39
@@ -19,12 +19,16 @@ require "kitchen/terraform/config_attribute_cacher"
|
|
19
19
|
require "kitchen/terraform/config_schemas/optional_string"
|
20
20
|
require "kitchen/terraform/file_path_config_attribute_definer"
|
21
21
|
|
22
|
-
#
|
23
|
-
#
|
22
|
+
# This attribute contains the path to the directory which contains
|
23
|
+
# {https://www.terraform.io/docs/commands/init.html#plugin-installation customized Terraform provider plugins} to
|
24
|
+
# install in place of the official Terraform provider plugins.
|
25
|
+
#
|
26
|
+
# Type:: {http://www.yaml.org/spec/1.2/spec.html#id2760844 Scalar}
|
27
|
+
# Required:: False
|
28
|
+
# Default:: There is no default value because any value will disable the normal Terraform plugin retrieval process.
|
29
|
+
# Example:: <code>plugin_directory: /path/to/terraform/plugins</code>
|
24
30
|
#
|
25
31
|
# @abstract It must be included by a plugin class in order to be used.
|
26
|
-
# @see https://www.terraform.io/docs/commands/init.html#plugin-installation Terraform: Command: init: Plugin
|
27
|
-
# Installation
|
28
32
|
module ::Kitchen::Terraform::ConfigAttribute::PluginDirectory
|
29
33
|
# A callback to define the configuration attribute which is invoked when this module is included in a plugin class.
|
30
34
|
#
|
@@ -46,10 +50,13 @@ module ::Kitchen::Terraform::ConfigAttribute::PluginDirectory
|
|
46
50
|
|
47
51
|
extend ::Kitchen::Terraform::ConfigAttributeCacher
|
48
52
|
|
49
|
-
# There is no default value because any value will disable the normal Terraform plugin retrieval process.
|
50
|
-
#
|
51
53
|
# @return [nil]
|
52
54
|
def config_plugin_directory_default_value
|
53
55
|
nil
|
54
56
|
end
|
57
|
+
|
58
|
+
# @return [::String] the value converted to a flag.
|
59
|
+
def config_plugin_directory_flag
|
60
|
+
config_plugin_directory.nil? and "" or "-plugin-dir=#{config_plugin_directory}"
|
61
|
+
end
|
55
62
|
end
|
@@ -19,14 +19,15 @@ require "kitchen/terraform/config_attribute_cacher"
|
|
19
19
|
require "kitchen/terraform/config_schemas/string"
|
20
20
|
require "kitchen/terraform/file_path_config_attribute_definer"
|
21
21
|
|
22
|
-
#
|
23
|
-
#
|
22
|
+
# This attribute contains the path to the directory which contains the root Terraform module to be tested.
|
23
|
+
#
|
24
|
+
# Type:: {http://www.yaml.org/spec/1.2/spec.html#id2760844 Scalar}
|
25
|
+
# Required:: False
|
26
|
+
# Default:: The {https://en.wikipedia.org/wiki/Working_directory working directory} of the Test Kitchen process.
|
27
|
+
# Example:: <code>root_module_directory: /path/to/terraform/root/module/directory</code>
|
24
28
|
#
|
25
29
|
# @abstract It must be included by a plugin class in order to be used.
|
26
|
-
|
27
|
-
# Module
|
28
|
-
# @see https://en.wikipedia.org/wiki/Working_directory Working directory
|
29
|
-
module ::Kitchen::Terraform::ConfigAttribute::Directory
|
30
|
+
module ::Kitchen::Terraform::ConfigAttribute::RootModuleDirectory
|
30
31
|
# A callback to define the configuration attribute which is invoked when this module is included in a plugin class.
|
31
32
|
#
|
32
33
|
# @param plugin_class [::Kitchen::Configurable] A plugin class.
|
@@ -42,13 +43,13 @@ module ::Kitchen::Terraform::ConfigAttribute::Directory
|
|
42
43
|
|
43
44
|
# @return [::Symbol] the symbol corresponding to the attribute.
|
44
45
|
def self.to_sym
|
45
|
-
:
|
46
|
+
:root_module_directory
|
46
47
|
end
|
47
48
|
|
48
49
|
extend ::Kitchen::Terraform::ConfigAttributeCacher
|
49
50
|
|
50
51
|
# @return [::String] the working directory of the Test Kitchen process.
|
51
|
-
def
|
52
|
+
def config_root_module_directory_default_value
|
52
53
|
"."
|
53
54
|
end
|
54
55
|
end
|
@@ -19,10 +19,18 @@ require "kitchen/terraform/config_attribute_cacher"
|
|
19
19
|
require "kitchen/terraform/config_schemas/array_of_strings"
|
20
20
|
require "kitchen/terraform/file_path_config_attribute_definer"
|
21
21
|
|
22
|
-
#
|
22
|
+
# This attribute comprises paths to
|
23
|
+
# {https://www.terraform.io/docs/configuration/variables.html#variable-files Terraform variable files}.
|
24
|
+
#
|
25
|
+
# Type:: {http://www.yaml.org/spec/1.2/spec.html#id2760118 Sequince of scalars}
|
26
|
+
# Required:: False
|
27
|
+
# Example::
|
28
|
+
# _
|
29
|
+
# variable_files:
|
30
|
+
# - /path/to/first/variable/file
|
31
|
+
# - /path/to/second/variable/file
|
23
32
|
#
|
24
33
|
# @abstract It must be included by a plugin class in order to be used.
|
25
|
-
# @see https://www.terraform.io/docs/commands/apply.html#var-file-foo Terraform: Command: apply: -var-file
|
26
34
|
module ::Kitchen::Terraform::ConfigAttribute::VariableFiles
|
27
35
|
# A callback to define the configuration attribute which is invoked when this module is included in a plugin class.
|
28
36
|
#
|
@@ -48,4 +56,13 @@ module ::Kitchen::Terraform::ConfigAttribute::VariableFiles
|
|
48
56
|
def config_variable_files_default_value
|
49
57
|
[]
|
50
58
|
end
|
59
|
+
|
60
|
+
# @return [::String] the elements of the value converted to flags, joined by white space.
|
61
|
+
def config_variable_files_flags
|
62
|
+
config_variable_files
|
63
|
+
.map do |path|
|
64
|
+
"-var-file=#{path}"
|
65
|
+
end
|
66
|
+
.join " "
|
67
|
+
end
|
51
68
|
end
|
@@ -19,12 +19,17 @@ require "kitchen/terraform/config_attribute_cacher"
|
|
19
19
|
require "kitchen/terraform/config_attribute_definer"
|
20
20
|
require "kitchen/terraform/config_schemas/hash_of_symbols_and_strings"
|
21
21
|
|
22
|
-
#
|
23
|
-
#
|
22
|
+
# This attribute comprises {https://www.terraform.io/docs/configuration/variables.html Terraform variables}.
|
23
|
+
#
|
24
|
+
# Type:: {http://www.yaml.org/spec/1.2/spec.html#id2760142 Mapping of scalars to scalars}
|
25
|
+
# Required:: False
|
26
|
+
# Example::
|
27
|
+
# _
|
28
|
+
# variables:
|
29
|
+
# image: image-1234
|
30
|
+
# zone: zone-5
|
24
31
|
#
|
25
32
|
# @abstract It must be included by a plugin class in order to be used.
|
26
|
-
# @see https://www.terraform.io/docs/commands/apply.html#var-39-foo-bar-39- Terraform: Command: apply: -var
|
27
|
-
# @see https://www.terraform.io/docs/configuration/variables.html Terraform: Variables
|
28
33
|
module ::Kitchen::Terraform::ConfigAttribute::Variables
|
29
34
|
# A callback to define the configuration attribute which is invoked when this module is included in a plugin class.
|
30
35
|
#
|
@@ -50,4 +55,13 @@ module ::Kitchen::Terraform::ConfigAttribute::Variables
|
|
50
55
|
def config_variables_default_value
|
51
56
|
{}
|
52
57
|
end
|
58
|
+
|
59
|
+
# @return [::String] the elements of the value converted to flags, joined by whitespace.
|
60
|
+
def config_variables_flags
|
61
|
+
config_variables
|
62
|
+
.map do |key, value|
|
63
|
+
"-var='#{key}=#{value}'"
|
64
|
+
end
|
65
|
+
.join " "
|
66
|
+
end
|
53
67
|
end
|
@@ -29,11 +29,6 @@ module ::Kitchen::Terraform::Configurable
|
|
29
29
|
configurable_class.plugin_version ::Kitchen::Terraform::VERSION
|
30
30
|
end
|
31
31
|
|
32
|
-
# @return [::Kitchen::Driver::Terraform] the driver which will manage the lifecycle actions of the instance.
|
33
|
-
def driver
|
34
|
-
instance.driver
|
35
|
-
end
|
36
|
-
|
37
32
|
# Alternative implementation of Kitchen::Configurable#finalize_config! which validates the configuration before
|
38
33
|
# attempting to expand paths.
|
39
34
|
#
|
@@ -58,18 +53,4 @@ module ::Kitchen::Terraform::Configurable
|
|
58
53
|
|
59
54
|
self
|
60
55
|
end
|
61
|
-
|
62
|
-
# Constructs a pathname under the Test Kitchen instance directory.
|
63
|
-
#
|
64
|
-
# @return [::String] +"<kitchen-root>/.kitchen/kitchen-terraform/<suite-platform>/<filename>"+.
|
65
|
-
def instance_pathname(filename:)
|
66
|
-
::File
|
67
|
-
.join(
|
68
|
-
config.fetch(:kitchen_root),
|
69
|
-
".kitchen",
|
70
|
-
"kitchen-terraform",
|
71
|
-
instance.name,
|
72
|
-
filename
|
73
|
-
)
|
74
|
-
end
|
75
56
|
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Copyright 2016 New Context Services, 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 "dry/monads"
|
18
|
+
require "kitchen/terraform"
|
19
|
+
require "kitchen/terraform"
|
20
|
+
require "mixlib/shellout"
|
21
|
+
|
22
|
+
# Terraform commands are run by shelling out and using the
|
23
|
+
# {https://www.terraform.io/docs/commands/index.html command-line interface}, which is assumed to be present in the
|
24
|
+
# {https://en.wikipedia.org/wiki/PATH_(variable) PATH} of the user. The shell out environment includes the
|
25
|
+
# TF_IN_AUTOMATION environment variable as specified by the
|
26
|
+
# {https://www.terraform.io/guides/running-terraform-in-automation.html#controlling-terraform-output-in-automation Running Terraform in Automation guide}.
|
27
|
+
module ::Kitchen::Terraform::ShellOut
|
28
|
+
extend ::Dry::Monads::Either::Mixin
|
29
|
+
extend ::Dry::Monads::Try::Mixin
|
30
|
+
|
31
|
+
# Runs a Terraform command.
|
32
|
+
#
|
33
|
+
# @param command [::String] the command to run.
|
34
|
+
# @param duration [::Integer] the maximum duration in seconds to run the command.
|
35
|
+
# @param logger [::Kitchen::Logger] a Test Kitchen logger to capture the output from running the command.
|
36
|
+
# @return [::Dry::Monads::Either] the result of running the command.
|
37
|
+
# @see https://rubygems.org/gems/mixlib-shellout mixlib-shellout
|
38
|
+
def self.run(command:, duration: ::Mixlib::ShellOut::DEFAULT_READ_TIMEOUT, logger:)
|
39
|
+
Try ::Mixlib::ShellOut::InvalidCommandOption do
|
40
|
+
::Mixlib::ShellOut
|
41
|
+
.new(
|
42
|
+
"terraform #{command}",
|
43
|
+
environment: {"TF_IN_AUTOMATION" => "true"},
|
44
|
+
live_stream: logger,
|
45
|
+
timeout: duration
|
46
|
+
)
|
47
|
+
end
|
48
|
+
.bind do |shell_out|
|
49
|
+
Try(
|
50
|
+
::Errno::EACCES,
|
51
|
+
::Errno::ENOENT,
|
52
|
+
::Mixlib::ShellOut::CommandTimeout,
|
53
|
+
::Mixlib::ShellOut::ShellCommandFailed
|
54
|
+
) do
|
55
|
+
logger.warn "Running command `#{shell_out.command}`"
|
56
|
+
shell_out.run_command
|
57
|
+
shell_out.error!
|
58
|
+
shell_out.stdout
|
59
|
+
end
|
60
|
+
end
|
61
|
+
.to_either
|
62
|
+
.or do |error|
|
63
|
+
Left "Running command resulted in failure: #{error}"
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Copyright 2016 New Context Services, 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
|
+
# This is the namespace for Test Kitchen verifier plugins. This namespace is already defined in Test Kitchen but YARD
|
20
|
+
# requires it to be redefined here in order to include documenation from the Kitchen::Terraform namespace.
|
21
|
+
module Kitchen::Verifier
|
22
|
+
end
|
@@ -15,61 +15,66 @@
|
|
15
15
|
# limitations under the License.
|
16
16
|
|
17
17
|
require "dry/monads"
|
18
|
-
require "kitchen"
|
18
|
+
require "kitchen/verifier"
|
19
19
|
require "kitchen/terraform/config_attribute/color"
|
20
20
|
require "kitchen/terraform/config_attribute/groups"
|
21
21
|
require "kitchen/terraform/configurable"
|
22
22
|
require "kitchen/verifier/inspec"
|
23
23
|
|
24
|
-
# The
|
25
|
-
# of resources in the Terraform state.
|
24
|
+
# The verifier utilizes the {https://www.inspec.io/ InSpec infrastructure testing framework} to verify the behaviour and
|
25
|
+
# state of resources in the Terraform state.
|
26
26
|
#
|
27
|
-
#
|
27
|
+
# === Commands
|
28
28
|
#
|
29
|
-
#
|
29
|
+
# The following command-line commands are provided by the verifier.
|
30
30
|
#
|
31
|
-
#
|
31
|
+
# ==== kitchen verify
|
32
32
|
#
|
33
|
-
#
|
33
|
+
# A Test Kitchen instance is verified by iterating through the groups and executing the associated InSpec controls in a
|
34
|
+
# manner similar to the following command-line command.
|
34
35
|
#
|
35
|
-
#
|
36
|
+
# inspec exec \
|
37
|
+
# [--attrs=<terraform_outputs>] \
|
38
|
+
# --backend=<ssh|local> \
|
39
|
+
# [--no-color] \
|
40
|
+
# [--controls=<group.controls>] \
|
41
|
+
# --host=<group.hostnames.current|localhost> \
|
42
|
+
# [--password=<group.password>] \
|
43
|
+
# [--port=<group.port>] \
|
44
|
+
# --profiles-path=test/integration/<suite> \
|
45
|
+
# [--user=<group.username>] \
|
36
46
|
#
|
37
|
-
#
|
47
|
+
# === InSpec Profiles
|
48
|
+
#
|
49
|
+
# The {https://www.inspec.io/docs/reference/profiles/ InSpec profile} for a Test Kitchen suite must be defined under
|
50
|
+
# +./test/integration/<suite>/+.
|
51
|
+
#
|
52
|
+
# === Configuration Attributes
|
53
|
+
#
|
54
|
+
# The configuration attributes of the verifier control the behaviour of the InSpec runner. Within the
|
55
|
+
# {http://kitchen.ci/docs/getting-started/kitchen-yml Test Kitchen configuration file}, these attributes must be
|
56
|
+
# declared in the +verifier+ mapping along with the plugin name.
|
38
57
|
#
|
39
58
|
# verifier:
|
40
|
-
# name:
|
41
|
-
#
|
42
|
-
# groups:
|
43
|
-
# -
|
44
|
-
# name: "group_one"
|
45
|
-
# attributes:
|
46
|
-
# foo: "bar"
|
47
|
-
# controls:
|
48
|
-
# - "biz"
|
49
|
-
# hostnames: "hostnames_output"
|
50
|
-
# port: "123"
|
51
|
-
# username: "test-user"
|
52
|
-
# -
|
53
|
-
# name: "group_two"
|
59
|
+
# name: terraform
|
60
|
+
# a_configuration_attribute: some value
|
54
61
|
#
|
55
|
-
#
|
62
|
+
# ==== color
|
63
|
+
#
|
64
|
+
# {include:Kitchen::Terraform::ConfigAttribute::Color}
|
56
65
|
#
|
57
|
-
#
|
66
|
+
# ==== groups
|
67
|
+
#
|
68
|
+
# {include:Kitchen::Terraform::ConfigAttribute::Groups}
|
58
69
|
#
|
59
|
-
# @see ::Kitchen::Terraform::ConfigAttribute::Color
|
60
|
-
# @see ::Kitchen::Terraform::ConfigAttribute::Groups
|
61
|
-
# @see https://en.wikipedia.org/wiki/Secure_Shell Secure Shell
|
62
|
-
# @see https://github.com/chef/kitchen-inspec/ kitchen-inspec
|
63
|
-
# @see https://github.com/chef/kitchen-inspec/blob/master/lib/kitchen/verifier/inspec.rb kitchen-inspec: Verifier
|
64
|
-
# @see https://www.inspec.io/ InSpec
|
65
|
-
# @see https://www.inspec.io/docs/reference/profiles/ InSpec: Profiles
|
66
|
-
# @see https://www.terraform.io/docs/state/index.html Terraform: State
|
67
70
|
# @version 2
|
68
71
|
class ::Kitchen::Verifier::Terraform < ::Kitchen::Verifier::Inspec
|
69
72
|
kitchen_verifier_api_version 2
|
70
73
|
|
71
74
|
include ::Dry::Monads::Either::Mixin
|
72
75
|
|
76
|
+
include ::Dry::Monads::Maybe::Mixin
|
77
|
+
|
73
78
|
include ::Kitchen::Terraform::ConfigAttribute::Color
|
74
79
|
|
75
80
|
include ::Kitchen::Terraform::ConfigAttribute::Groups
|
@@ -84,16 +89,39 @@ class ::Kitchen::Verifier::Terraform < ::Kitchen::Verifier::Inspec
|
|
84
89
|
# @raise [::Kitchen::ActionFailed] if the result of the action is a failure.
|
85
90
|
# @return [::Dry::Monads::Either] the result of the action.
|
86
91
|
def call(state)
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
92
|
+
Maybe(state[:kitchen_terraform_output])
|
93
|
+
.or do
|
94
|
+
Left(
|
95
|
+
"The Test Kitchen state does not include :kitchen_terraform_output; this implies that the " \
|
96
|
+
"kitchen-terraform provisioner has not successfully converged"
|
97
|
+
)
|
98
|
+
end
|
99
|
+
.bind do |output|
|
100
|
+
::Kitchen::Verifier::Terraform::EnumerateGroupsAndHostnames
|
101
|
+
.call(
|
102
|
+
groups: config_groups,
|
103
|
+
output: ::Kitchen::Util.stringified_hash(output)
|
104
|
+
) do |group:, hostname:|
|
105
|
+
state
|
106
|
+
.store(
|
107
|
+
:kitchen_terraform_group,
|
108
|
+
group
|
109
|
+
)
|
110
|
+
state
|
111
|
+
.store(
|
112
|
+
:kitchen_terraform_hostname,
|
113
|
+
hostname
|
114
|
+
)
|
115
|
+
info "Verifying host '#{hostname}' of group '#{group.fetch :name}'"
|
116
|
+
super state
|
117
|
+
end
|
118
|
+
end
|
119
|
+
.or do |failure|
|
120
|
+
raise(
|
121
|
+
::Kitchen::ActionFailed,
|
122
|
+
failure
|
123
|
+
)
|
124
|
+
end
|
97
125
|
end
|
98
126
|
|
99
127
|
private
|
@@ -105,23 +133,51 @@ class ::Kitchen::Verifier::Terraform < ::Kitchen::Verifier::Inspec
|
|
105
133
|
# @return [::Hash] Inspec Runner options.
|
106
134
|
# @see https://github.com/chef/inspec/blob/master/lib/inspec/runner.rb ::Inspec::Runner
|
107
135
|
def runner_options(transport, state = {}, platform = nil, suite = nil)
|
108
|
-
super(transport, state, platform, suite)
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
136
|
+
super(transport, state, platform, suite)
|
137
|
+
.tap do |options|
|
138
|
+
::Kitchen::Verifier::Terraform::ConfigureInspecRunnerBackend
|
139
|
+
.call(
|
140
|
+
hostname: state.fetch(:kitchen_terraform_hostname),
|
141
|
+
options: options
|
142
|
+
)
|
143
|
+
::Kitchen::Verifier::Terraform::ConfigureInspecRunnerHost
|
144
|
+
.call(
|
145
|
+
hostname: state.fetch(:kitchen_terraform_hostname),
|
146
|
+
options: options
|
147
|
+
)
|
148
|
+
::Kitchen::Verifier::Terraform::ConfigureInspecRunnerPort
|
149
|
+
.call(
|
150
|
+
group: state.fetch(:kitchen_terraform_group),
|
151
|
+
options: options
|
152
|
+
)
|
153
|
+
::Kitchen::Verifier::Terraform::ConfigureInspecRunnerSSHKey
|
154
|
+
.call(
|
155
|
+
group: state.fetch(:kitchen_terraform_group),
|
156
|
+
options: options
|
157
|
+
)
|
158
|
+
::Kitchen::Verifier::Terraform::ConfigureInspecRunnerUser
|
159
|
+
.call(
|
160
|
+
group: state.fetch(:kitchen_terraform_group),
|
161
|
+
options: options
|
162
|
+
)
|
163
|
+
::Kitchen::Verifier::Terraform::ConfigureInspecRunnerAttributes
|
164
|
+
.call(
|
165
|
+
group: state.fetch(:kitchen_terraform_group),
|
166
|
+
output: ::Kitchen::Util.stringified_hash(state.fetch(:kitchen_terraform_output))
|
167
|
+
)
|
168
|
+
.bind do |attributes|
|
169
|
+
options
|
170
|
+
.store(
|
171
|
+
:attributes,
|
172
|
+
attributes
|
173
|
+
)
|
174
|
+
end
|
175
|
+
::Kitchen::Verifier::Terraform::ConfigureInspecRunnerControls
|
176
|
+
.call(
|
177
|
+
group: state.fetch(:kitchen_terraform_group),
|
178
|
+
options: options
|
179
|
+
)
|
180
|
+
end
|
125
181
|
end
|
126
182
|
end
|
127
183
|
|