kitchen-terraform 5.2.0 → 5.3.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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/README.md +16 -5
- data/lib/kitchen/terraform/config_schemas/system.rb +24 -4
- data/lib/kitchen/terraform/inspec_options_factory.rb +27 -8
- data/lib/kitchen/terraform/inspec_runner.rb +1 -1
- data/lib/kitchen/terraform/provisioner/converge.rb +14 -4
- data/lib/kitchen/terraform/raise/action_failed.rb +21 -21
- data/lib/kitchen/terraform/system.rb +9 -7
- data/lib/kitchen/terraform/system_bastion_host_resolver.rb +72 -0
- data/lib/kitchen/terraform/system_inspec_map.rb +0 -1
- data/lib/kitchen/terraform/version.rb +1 -1
- data/lib/kitchen/verifier/terraform.rb +2 -2
- metadata +3 -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: d8dc1f0460a8fe0af7e998d2e4b9a898faee66436930a3be0701c230c6eed625
|
|
4
|
+
data.tar.gz: a906eb2ca2f29a01be6e8b9bbc8e555c5d666941e0f73cbd34162946b77d238e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 811fd1d6476ec8364ddd5e5c6022e487cdc8d53c54674a1d6f5c51805fb1b10d8942315f4d4efebf6ea4c20d0a44099bac4f55af6ef3ffe738d92deea2db8b43
|
|
7
|
+
data.tar.gz: bc8fbbae6a4ad9db3ffed99be1afcf953cee0dba241834ff5053f30738486388b2ffc9856d5c10b8dba503a3c68b15d54e9bf139c9d2b375bce9b154a688f78f
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
data.tar.gz.sig
CHANGED
|
Binary file
|
data/README.md
CHANGED
|
@@ -75,7 +75,7 @@ the semantic versioning of the Ruby gem.
|
|
|
75
75
|
|
|
76
76
|
```ruby
|
|
77
77
|
source "https://rubygems.org/" do
|
|
78
|
-
gem "kitchen-terraform", "~> 5.
|
|
78
|
+
gem "kitchen-terraform", "~> 5.3"
|
|
79
79
|
end
|
|
80
80
|
```
|
|
81
81
|
|
|
@@ -102,7 +102,7 @@ example.
|
|
|
102
102
|
> Installing Kitchen-Terraform with RubyGems
|
|
103
103
|
|
|
104
104
|
```sh
|
|
105
|
-
gem install kitchen-terraform --version 5.
|
|
105
|
+
gem install kitchen-terraform --version 5.3.0
|
|
106
106
|
```
|
|
107
107
|
|
|
108
108
|
This approach is not recommended as it requires more effort to install
|
|
@@ -143,6 +143,15 @@ Terraform state.
|
|
|
143
143
|
More information can be found in the
|
|
144
144
|
[Ruby gem documentation][ruby-gem-documentation].
|
|
145
145
|
|
|
146
|
+
### Caveats
|
|
147
|
+
|
|
148
|
+
Versions of Terraform in the 0.11 series may cause `kitchen test` to
|
|
149
|
+
fail if the initial destroy targets an empty Terraform state. A
|
|
150
|
+
workaround for this problem is to use
|
|
151
|
+
`kitchen verify && kitchen destroy` instead of `kitchen test`. More
|
|
152
|
+
details about the problem are available in
|
|
153
|
+
[issue #271](issue-271).
|
|
154
|
+
|
|
146
155
|
### Example
|
|
147
156
|
|
|
148
157
|
This example demonstrates how to test a simple Terraform configuration
|
|
@@ -209,7 +218,8 @@ suites:
|
|
|
209
218
|
- name: example
|
|
210
219
|
```
|
|
211
220
|
|
|
212
|
-
Although Kitchen-Terraform supports multiple versions of Terraform,
|
|
221
|
+
Although Kitchen-Terraform supports multiple versions of Terraform,
|
|
222
|
+
below snippets are compatible with v0.12:
|
|
213
223
|
> ./main.tf
|
|
214
224
|
|
|
215
225
|
```hcl
|
|
@@ -380,11 +390,12 @@ Kitchen-Terraform is distributed under the [Apache License][license].
|
|
|
380
390
|
[gem-downloads-total-shield]: https://img.shields.io/gem/dt/kitchen-terraform.svg
|
|
381
391
|
[gem-downloads-version-shield]: https://img.shields.io/gem/dtv/kitchen-terraform.svg
|
|
382
392
|
[gem-version-shield]: https://img.shields.io/gem/v/kitchen-terraform.svg
|
|
383
|
-
[hakiri-shield]: https://hakiri.io/github/newcontext-oss/kitchen-terraform/master.svg
|
|
384
|
-
[hakiri]: https://hakiri.io/github/newcontext-oss/kitchen-terraform/
|
|
385
393
|
[gitter-shield]: https://img.shields.io/gitter/room/kitchen-terraform/Lobby.svg
|
|
386
394
|
[gitter]: https://gitter.im/kitchen-terraform/Lobby
|
|
395
|
+
[hakiri-shield]: https://hakiri.io/github/newcontext-oss/kitchen-terraform/master.svg
|
|
396
|
+
[hakiri]: https://hakiri.io/github/newcontext-oss/kitchen-terraform/
|
|
387
397
|
[inspec]: https://www.inspec.io/
|
|
398
|
+
[issue-271]: https://github.com/newcontext-oss/kitchen-terraform/issues/271
|
|
388
399
|
[kitchen-terraform-gem]: https://rubygems.org/gems/kitchen-terraform
|
|
389
400
|
[kitchen-terraform-logo]: https://raw.githubusercontent.com/newcontext-oss/kitchen-terraform/master/assets/logo.png
|
|
390
401
|
[kitchen-terraform-tutorials]: https://newcontext-oss.github.io/kitchen-terraform/tutorials/
|
|
@@ -130,6 +130,8 @@ module Kitchen
|
|
|
130
130
|
#
|
|
131
131
|
# The +bastion_host+ key must be used in combination with a backend which supports remote connections.
|
|
132
132
|
#
|
|
133
|
+
# The +bastion_host_output+ key will take priority over the +bastion_host+ key.
|
|
134
|
+
#
|
|
133
135
|
# <em>Example kitchen.yml</em>
|
|
134
136
|
# verifier:
|
|
135
137
|
# name: terraform
|
|
@@ -138,12 +140,29 @@ module Kitchen
|
|
|
138
140
|
# backend: ssh
|
|
139
141
|
# bastion_host: bastion-host.domain
|
|
140
142
|
#
|
|
143
|
+
# ====== bastion_host_output
|
|
144
|
+
#
|
|
145
|
+
# The value of the +bastion_host_output+ key is a scalar which is used to obtain the address of a bastion host in
|
|
146
|
+
# the system from a Terraform output.
|
|
147
|
+
#
|
|
148
|
+
# The scalar must match the name of an output with a value which is a string.
|
|
149
|
+
#
|
|
150
|
+
# The +bastion_host_output+ key must be used in combination with a backend which enables remote connections.
|
|
151
|
+
#
|
|
152
|
+
# <em>Example kitchen.yml</em>
|
|
153
|
+
# verifier:
|
|
154
|
+
# name: terraform
|
|
155
|
+
# systems:
|
|
156
|
+
# - name: a system
|
|
157
|
+
# backend: ssh
|
|
158
|
+
# bastion_host_output: an_output
|
|
159
|
+
#
|
|
141
160
|
# ====== bastion_port
|
|
142
161
|
#
|
|
143
162
|
# The value of the +bastion_port+ key is an integer which is used as the port number to connect to on the bastion
|
|
144
163
|
# host.
|
|
145
164
|
#
|
|
146
|
-
# The +bastion_port+ key must be used in combination with the +bastion_host+ key.
|
|
165
|
+
# The +bastion_port+ key must be used in combination with the +bastion_host_output+ key or the +bastion_host+ key.
|
|
147
166
|
#
|
|
148
167
|
# <em>Example kitchen.yml</em>
|
|
149
168
|
# verifier:
|
|
@@ -151,7 +170,7 @@ module Kitchen
|
|
|
151
170
|
# systems:
|
|
152
171
|
# - name: a system
|
|
153
172
|
# backend: ssh
|
|
154
|
-
#
|
|
173
|
+
# bastion_host_output: an_output
|
|
155
174
|
# bastion_port: 1234
|
|
156
175
|
#
|
|
157
176
|
# ====== bastion_user
|
|
@@ -159,7 +178,7 @@ module Kitchen
|
|
|
159
178
|
# The value of the +bastion_user+ key is a scalar which is used as the username for authentication with the
|
|
160
179
|
# bastion host.
|
|
161
180
|
#
|
|
162
|
-
# The +bastion_user+ key must be used in combination with the +bastion_host+ key.
|
|
181
|
+
# The +bastion_user+ key must be used in combination with the +bastion_host_output+ key or the +bastion_host+ key.
|
|
163
182
|
#
|
|
164
183
|
# <em>Example kitchen.yml</em>
|
|
165
184
|
# verifier:
|
|
@@ -167,7 +186,7 @@ module Kitchen
|
|
|
167
186
|
# systems:
|
|
168
187
|
# - name: a system
|
|
169
188
|
# backend: ssh
|
|
170
|
-
#
|
|
189
|
+
# bastion_host_output: an_output
|
|
171
190
|
# bastion_user: bastion-user
|
|
172
191
|
#
|
|
173
192
|
# ====== controls
|
|
@@ -554,6 +573,7 @@ module Kitchen
|
|
|
554
573
|
optional(:attrs_outputs).filled :hash?
|
|
555
574
|
optional(:backend_cache).value :bool?
|
|
556
575
|
optional(:bastion_host).filled :str?
|
|
576
|
+
optional(:bastion_host_output).filled :str?
|
|
557
577
|
optional(:bastion_port).value :int?
|
|
558
578
|
optional(:bastion_user).filled :str?
|
|
559
579
|
optional(:controls).each(:filled?, :str?)
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
# limitations under the License.
|
|
16
16
|
|
|
17
17
|
require "inspec"
|
|
18
|
+
require "kitchen/terraform/system_bastion_host_resolver"
|
|
18
19
|
require "kitchen/terraform/system_inspec_map"
|
|
19
20
|
require "rubygems"
|
|
20
21
|
|
|
@@ -40,28 +41,46 @@ module Kitchen
|
|
|
40
41
|
#
|
|
41
42
|
# @param attributes [Hash] the attributes to be added to the InSpec options.
|
|
42
43
|
# @param system_configuration_attributes [Hash] the configuration attributes of a system.
|
|
44
|
+
# @raise [Kitchen::ClientError] if the system bastion host fails to be resolved.
|
|
43
45
|
# @return [Hash] a mapping of InSpec options.
|
|
44
46
|
def build(attributes:, system_configuration_attributes:)
|
|
45
|
-
system_configuration_attributes
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
options.store system_inspec_map.fetch(attribute_name), attribute_value
|
|
49
|
-
end
|
|
47
|
+
map_system_to_inspec system_configuration_attributes: system_configuration_attributes
|
|
48
|
+
options.store self.class.inputs_key, attributes
|
|
49
|
+
resolve_bastion_host system_configuration_attributes: system_configuration_attributes
|
|
50
50
|
|
|
51
|
-
options
|
|
51
|
+
options
|
|
52
52
|
end
|
|
53
53
|
|
|
54
54
|
# #initialize prepares a new instance of the class.
|
|
55
55
|
#
|
|
56
|
+
# @param outputs [Hash] the Terraform output variables.
|
|
56
57
|
# @return [Kitchen::Terraform::InSpecOptionsFactory]
|
|
57
|
-
def initialize
|
|
58
|
+
def initialize(outputs:)
|
|
58
59
|
self.options = { "distinct_exit" => false }
|
|
60
|
+
self.system_bastion_host_resolver = ::Kitchen::Terraform::SystemBastionHostResolver.new outputs: outputs
|
|
59
61
|
self.system_inspec_map = ::Kitchen::Terraform::SYSTEM_INSPEC_MAP.dup
|
|
60
62
|
end
|
|
61
63
|
|
|
62
64
|
private
|
|
63
65
|
|
|
64
|
-
attr_accessor :options, :system_inspec_map
|
|
66
|
+
attr_accessor :options, :system_bastion_host_resolver, :system_inspec_map
|
|
67
|
+
|
|
68
|
+
def map_system_to_inspec(system_configuration_attributes:)
|
|
69
|
+
system_configuration_attributes.lazy.select do |attribute_name, _|
|
|
70
|
+
system_inspec_map.key?(attribute_name)
|
|
71
|
+
end.each do |attribute_name, attribute_value|
|
|
72
|
+
options.store system_inspec_map.fetch(attribute_name), attribute_value
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def resolve_bastion_host(system_configuration_attributes:)
|
|
77
|
+
system_bastion_host_resolver.resolve(
|
|
78
|
+
bastion_host: system_configuration_attributes.fetch(:bastion_host, ""),
|
|
79
|
+
bastion_host_output: system_configuration_attributes.fetch(:bastion_host_output, ""),
|
|
80
|
+
) do |bastion_host:|
|
|
81
|
+
options.store :bastion_host, bastion_host
|
|
82
|
+
end
|
|
83
|
+
end
|
|
65
84
|
end
|
|
66
85
|
end
|
|
67
86
|
end
|
|
@@ -75,9 +75,10 @@ module Kitchen
|
|
|
75
75
|
# @param workspace_name [String] the name of the Terraform workspace to select or to create.
|
|
76
76
|
# @return [Kitchen::Terraform::Driver::Converge]
|
|
77
77
|
def initialize(config:, logger:, version_requirement:, workspace_name:)
|
|
78
|
+
client = config.fetch :client
|
|
78
79
|
hash_config = config.to_hash.merge workspace_name: workspace_name
|
|
79
80
|
self.command_executor = ::Kitchen::Terraform::CommandExecutor.new(
|
|
80
|
-
client:
|
|
81
|
+
client: client,
|
|
81
82
|
logger: logger,
|
|
82
83
|
)
|
|
83
84
|
self.logger = logger
|
|
@@ -86,11 +87,9 @@ module Kitchen
|
|
|
86
87
|
self.apply = ::Kitchen::Terraform::Command::Apply.new config: config
|
|
87
88
|
self.get = ::Kitchen::Terraform::Command::Get.new
|
|
88
89
|
self.output = ::Kitchen::Terraform::Command::Output.new
|
|
90
|
+
initialize_outputs_handlers client: client, logger: logger
|
|
89
91
|
self.validate = ::Kitchen::Terraform::Command::Validate.new config: config
|
|
90
92
|
self.workspace_select = ::Kitchen::Terraform::Command::WorkspaceSelect.new config: hash_config
|
|
91
|
-
self.outputs_manager = ::Kitchen::Terraform::OutputsManager.new
|
|
92
|
-
self.outputs_parser = ::Kitchen::Terraform::OutputsParser.new
|
|
93
|
-
self.outputs_reader = ::Kitchen::Terraform::OutputsReader.new command_executor: command_executor
|
|
94
93
|
self.variables = config.fetch :variables
|
|
95
94
|
self.variables_manager = ::Kitchen::Terraform::VariablesManager.new
|
|
96
95
|
self.verify_version = ::Kitchen::Terraform::VerifyVersion.new(
|
|
@@ -144,6 +143,17 @@ module Kitchen
|
|
|
144
143
|
build_infrastructure
|
|
145
144
|
end
|
|
146
145
|
|
|
146
|
+
def initialize_outputs_handlers(client:, logger:)
|
|
147
|
+
self.outputs_manager = ::Kitchen::Terraform::OutputsManager.new
|
|
148
|
+
self.outputs_parser = ::Kitchen::Terraform::OutputsParser.new
|
|
149
|
+
self.outputs_reader = ::Kitchen::Terraform::OutputsReader.new(
|
|
150
|
+
command_executor: ::Kitchen::Terraform::CommandExecutor.new(
|
|
151
|
+
client: client,
|
|
152
|
+
logger: ::Kitchen::Terraform::DebugLogger.new(logger),
|
|
153
|
+
),
|
|
154
|
+
)
|
|
155
|
+
end
|
|
156
|
+
|
|
147
157
|
def parse_outputs(json_outputs:)
|
|
148
158
|
logger.warn "Parsing the Terraform output variables as JSON..."
|
|
149
159
|
outputs_parser.parse json_outputs: json_outputs do |parsed_outputs:|
|
|
@@ -19,31 +19,31 @@ require "kitchen"
|
|
|
19
19
|
module Kitchen
|
|
20
20
|
module Terraform
|
|
21
21
|
module Raise
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
22
|
+
# ActionFailed is the class of objects which handle errors resulting in failed actions.
|
|
23
|
+
class ActionFailed
|
|
24
|
+
# #call logs an error message and raises an error with the message.
|
|
25
|
+
#
|
|
26
|
+
# @param message [String] the error message.
|
|
27
|
+
# @raise [Kitchen::ActionFailed]
|
|
28
|
+
# @return [void]
|
|
29
|
+
def call(message:)
|
|
30
|
+
logger.error message
|
|
31
31
|
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
raise ::Kitchen::ActionFailed, message
|
|
33
|
+
end
|
|
34
34
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
35
|
+
# #initialize prepares a new instance of the class.
|
|
36
|
+
#
|
|
37
|
+
# @param logger [Kitchen::Logger] a logger to log messages.
|
|
38
|
+
# @return [Kitchen::Terraform::ActionFailed]
|
|
39
|
+
def initialize(logger:)
|
|
40
|
+
self.logger = logger
|
|
41
|
+
end
|
|
42
42
|
|
|
43
|
-
|
|
43
|
+
private
|
|
44
44
|
|
|
45
|
-
|
|
45
|
+
attr_accessor :logger
|
|
46
|
+
end
|
|
46
47
|
end
|
|
47
48
|
end
|
|
48
49
|
end
|
|
49
|
-
end
|
|
@@ -46,7 +46,6 @@ module Kitchen
|
|
|
46
46
|
self.hosts = configuration_attributes.fetch :hosts do
|
|
47
47
|
[]
|
|
48
48
|
end.dup
|
|
49
|
-
self.inspec_options_factory = ::Kitchen::Terraform::InSpecOptionsFactory.new
|
|
50
49
|
self.logger = logger
|
|
51
50
|
end
|
|
52
51
|
|
|
@@ -72,17 +71,20 @@ module Kitchen
|
|
|
72
71
|
|
|
73
72
|
private
|
|
74
73
|
|
|
75
|
-
attr_accessor :attrs, :attrs_outputs, :configuration_attributes, :hosts, :
|
|
74
|
+
attr_accessor :attrs, :attrs_outputs, :configuration_attributes, :hosts, :logger
|
|
76
75
|
|
|
77
|
-
def execute_inspec_runner(fail_fast:)
|
|
76
|
+
def execute_inspec_runner(fail_fast:, options:)
|
|
78
77
|
::Kitchen::Terraform::InSpecFactory.new(fail_fast: fail_fast, hosts: hosts).build(
|
|
79
|
-
options:
|
|
78
|
+
options: options,
|
|
80
79
|
profile_locations: configuration_attributes.fetch(:profile_locations),
|
|
81
80
|
).exec
|
|
82
81
|
end
|
|
83
82
|
|
|
84
|
-
def inspec_options
|
|
85
|
-
|
|
83
|
+
def inspec_options(outputs:)
|
|
84
|
+
::Kitchen::Terraform::InSpecOptionsFactory.new(outputs: outputs).build(
|
|
85
|
+
attributes: attrs,
|
|
86
|
+
system_configuration_attributes: configuration_attributes,
|
|
87
|
+
)
|
|
86
88
|
end
|
|
87
89
|
|
|
88
90
|
def resolve(outputs:, variables:)
|
|
@@ -102,7 +104,7 @@ module Kitchen
|
|
|
102
104
|
def resolve_and_execute(fail_fast:, outputs:, variables:)
|
|
103
105
|
logger.warn "Verifying the '#{self}' system..."
|
|
104
106
|
resolve outputs: outputs, variables: variables
|
|
105
|
-
execute_inspec_runner fail_fast: fail_fast
|
|
107
|
+
execute_inspec_runner fail_fast: fail_fast, options: inspec_options(outputs: outputs)
|
|
106
108
|
logger.warn "Finished verifying the '#{self}' system."
|
|
107
109
|
end
|
|
108
110
|
end
|
|
@@ -0,0 +1,72 @@
|
|
|
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
|
+
# SystemBastionHostResolver is the class of objects which resolve a bastion host of a system which may be either
|
|
22
|
+
# dynamically obtained from a Terraform output variable or statically defined.
|
|
23
|
+
class SystemBastionHostResolver
|
|
24
|
+
# #initialize prepares a new instance of the class.
|
|
25
|
+
#
|
|
26
|
+
# @param outputs [Hash] a map of Terraform output variables.
|
|
27
|
+
# @return [Kitchen::Terraform::SystemBastionHostResolver]
|
|
28
|
+
def initialize(outputs:)
|
|
29
|
+
self.outputs = Hash[outputs]
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# #resolve resolves a bastion host from either the specified Terraform output or the static value.
|
|
33
|
+
#
|
|
34
|
+
# @param bastion_host [String] a statically defined host.
|
|
35
|
+
# @param bastion_host_output [String] the name of the Terraform output which contains a bastion host.
|
|
36
|
+
# @yieldparam bastion_host [String] the bastion host.
|
|
37
|
+
# @raise [Kitchen::ClientError] if the specified Terraform output is not found.
|
|
38
|
+
# @return [self]
|
|
39
|
+
def resolve(bastion_host:, bastion_host_output:)
|
|
40
|
+
if !bastion_host.empty?
|
|
41
|
+
yield bastion_host: bastion_host
|
|
42
|
+
elsif !bastion_host_output.empty?
|
|
43
|
+
yield bastion_host: resolved_output(bastion_host_output: bastion_host_output).fetch(:value)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
self
|
|
47
|
+
rescue ::KeyError
|
|
48
|
+
raise(
|
|
49
|
+
::Kitchen::ClientError,
|
|
50
|
+
"Resolving the system bastion host failed due to the absence of the 'value' key from the " \
|
|
51
|
+
"'#{bastion_host_output}' Terraform output of the Kitchen instance state. This error indicates that the " \
|
|
52
|
+
"output format of `terraform output -json` is unexpected."
|
|
53
|
+
)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
private
|
|
57
|
+
|
|
58
|
+
attr_accessor :outputs
|
|
59
|
+
|
|
60
|
+
def resolved_output(bastion_host_output:)
|
|
61
|
+
outputs.fetch bastion_host_output.to_sym
|
|
62
|
+
rescue ::KeyError
|
|
63
|
+
raise(
|
|
64
|
+
::Kitchen::ClientError,
|
|
65
|
+
"Resolving the system bastion host failed due to the absence of the '#{bastion_host_output}' key from the " \
|
|
66
|
+
"Terraform outputs of the Kitchen instance state. This error indicates either that `kitchen converge` must " \
|
|
67
|
+
"be executed again to update the Terraform outputs or that the wrong key was provided."
|
|
68
|
+
)
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
@@ -183,9 +183,9 @@ module Kitchen
|
|
|
183
183
|
end
|
|
184
184
|
|
|
185
185
|
def verify_systems
|
|
186
|
-
logger.
|
|
186
|
+
logger.warn "Verifying the systems..."
|
|
187
187
|
systems_verifier.verify outputs: outputs, variables: variables
|
|
188
|
-
logger.
|
|
188
|
+
logger.warn "Finished verifying the systems."
|
|
189
189
|
end
|
|
190
190
|
end
|
|
191
191
|
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.
|
|
4
|
+
version: 5.3.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Aaron Lane
|
|
@@ -61,7 +61,7 @@ cert_chain:
|
|
|
61
61
|
JH4yGDzVEYaZHaohSDcYuGLK6OQylPu7oM75S+TNLWseDIT8bWgQk6NelVjtQQ2Q
|
|
62
62
|
XSbgfu863jyey/0qO01cUo3+iTqzl85cWg==
|
|
63
63
|
-----END CERTIFICATE-----
|
|
64
|
-
date: 2020-
|
|
64
|
+
date: 2020-03-08 00:00:00.000000000 Z
|
|
65
65
|
dependencies:
|
|
66
66
|
- !ruby/object:Gem::Dependency
|
|
67
67
|
name: bundler
|
|
@@ -508,6 +508,7 @@ files:
|
|
|
508
508
|
- lib/kitchen/terraform/system.rb
|
|
509
509
|
- lib/kitchen/terraform/system_attrs_inputs_resolver.rb
|
|
510
510
|
- lib/kitchen/terraform/system_attrs_outputs_resolver.rb
|
|
511
|
+
- lib/kitchen/terraform/system_bastion_host_resolver.rb
|
|
511
512
|
- lib/kitchen/terraform/system_hosts_resolver.rb
|
|
512
513
|
- lib/kitchen/terraform/system_inspec_map.rb
|
|
513
514
|
- lib/kitchen/terraform/systems_verifier.rb
|
metadata.gz.sig
CHANGED
|
Binary file
|