kitchen-terraform 2.1.0 → 3.0.0
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 +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
|
|