kitchen-terraform 5.8.0 → 6.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (117) 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 +17 -16
  5. data/lib/kitchen/driver/terraform.rb +1 -1
  6. data/lib/kitchen/provisioner/terraform.rb +1 -1
  7. data/lib/kitchen/terraform.rb +1 -1
  8. data/lib/kitchen/terraform/breaking.rb +1 -1
  9. data/lib/kitchen/terraform/command.rb +1 -1
  10. data/lib/kitchen/terraform/command/apply.rb +1 -1
  11. data/lib/kitchen/terraform/command/destroy.rb +1 -1
  12. data/lib/kitchen/terraform/command/get.rb +1 -1
  13. data/lib/kitchen/terraform/command/init.rb +1 -1
  14. data/lib/kitchen/terraform/command/init/post_zero_fifteen_zero.rb +1 -1
  15. data/lib/kitchen/terraform/command/init/pre_zero_fifteen_zero.rb +1 -1
  16. data/lib/kitchen/terraform/command/init_factory.rb +1 -1
  17. data/lib/kitchen/terraform/command/output.rb +1 -1
  18. data/lib/kitchen/terraform/command/validate.rb +1 -1
  19. data/lib/kitchen/terraform/command/validate/post_zero_fifteen_zero.rb +1 -1
  20. data/lib/kitchen/terraform/command/validate/pre_zero_fifteen_zero.rb +1 -1
  21. data/lib/kitchen/terraform/command/validate_factory.rb +1 -1
  22. data/lib/kitchen/terraform/command/version.rb +1 -1
  23. data/lib/kitchen/terraform/command/workspace_delete.rb +1 -1
  24. data/lib/kitchen/terraform/command/workspace_new.rb +1 -1
  25. data/lib/kitchen/terraform/command/workspace_select.rb +1 -1
  26. data/lib/kitchen/terraform/command_executor.rb +3 -5
  27. data/lib/kitchen/terraform/command_flag.rb +1 -1
  28. data/lib/kitchen/terraform/command_flag/backend_config.rb +1 -1
  29. data/lib/kitchen/terraform/command_flag/color.rb +1 -1
  30. data/lib/kitchen/terraform/command_flag/lock_timeout.rb +1 -1
  31. data/lib/kitchen/terraform/command_flag/plugin_dir.rb +1 -1
  32. data/lib/kitchen/terraform/command_flag/upgrade.rb +1 -1
  33. data/lib/kitchen/terraform/command_flag/var.rb +1 -1
  34. data/lib/kitchen/terraform/command_flag/var_file.rb +1 -1
  35. data/lib/kitchen/terraform/config_attribute.rb +1 -1
  36. data/lib/kitchen/terraform/config_attribute/backend_configurations.rb +1 -1
  37. data/lib/kitchen/terraform/config_attribute/client.rb +3 -3
  38. data/lib/kitchen/terraform/config_attribute/color.rb +3 -3
  39. data/lib/kitchen/terraform/config_attribute/command_timeout.rb +1 -1
  40. data/lib/kitchen/terraform/config_attribute/fail_fast.rb +3 -3
  41. data/lib/kitchen/terraform/config_attribute/lock.rb +3 -3
  42. data/lib/kitchen/terraform/config_attribute/lock_timeout.rb +1 -1
  43. data/lib/kitchen/terraform/config_attribute/parallelism.rb +1 -1
  44. data/lib/kitchen/terraform/config_attribute/plugin_directory.rb +3 -3
  45. data/lib/kitchen/terraform/config_attribute/root_module_directory.rb +3 -3
  46. data/lib/kitchen/terraform/config_attribute/systems.rb +552 -4
  47. data/lib/kitchen/terraform/config_attribute/variable_files.rb +3 -3
  48. data/lib/kitchen/terraform/config_attribute/variables.rb +1 -1
  49. data/lib/kitchen/terraform/config_attribute/verify_version.rb +3 -3
  50. data/lib/kitchen/terraform/config_attribute_cacher.rb +1 -1
  51. data/lib/kitchen/terraform/{config_predicates.rb → config_attribute_contract.rb} +3 -3
  52. data/lib/kitchen/terraform/config_attribute_contract/array_of_strings.rb +30 -0
  53. data/lib/kitchen/terraform/{config_schemas → config_attribute_contract}/boolean.rb +7 -11
  54. data/lib/kitchen/terraform/config_attribute_contract/hash_of_symbols_and_strings.rb +41 -0
  55. data/lib/kitchen/terraform/{config_schemas.rb → config_attribute_contract/integer.rb} +10 -3
  56. data/lib/kitchen/terraform/config_attribute_contract/optional_string.rb +30 -0
  57. data/lib/kitchen/terraform/{config_schemas → config_attribute_contract}/string.rb +7 -9
  58. data/lib/kitchen/terraform/config_attribute_contract/systems.rb +63 -0
  59. data/lib/kitchen/terraform/config_attribute_definer.rb +2 -2
  60. data/lib/kitchen/terraform/config_attribute_type.rb +1 -1
  61. data/lib/kitchen/terraform/config_attribute_type/hash_of_symbols_and_strings.rb +9 -16
  62. data/lib/kitchen/terraform/config_attribute_type/integer.rb +27 -23
  63. data/lib/kitchen/terraform/configurable.rb +1 -1
  64. data/lib/kitchen/terraform/debug_logger.rb +1 -1
  65. data/lib/kitchen/terraform/deprecating.rb +1 -1
  66. data/lib/kitchen/terraform/driver.rb +1 -1
  67. data/lib/kitchen/terraform/driver/create.rb +5 -5
  68. data/lib/kitchen/terraform/driver/destroy.rb +8 -8
  69. data/lib/kitchen/terraform/error.rb +1 -1
  70. data/lib/kitchen/terraform/file_path_config_attribute_definer.rb +1 -1
  71. data/lib/kitchen/terraform/inspec.rb +1 -1
  72. data/lib/kitchen/terraform/inspec/fail_fast_with_hosts.rb +1 -1
  73. data/lib/kitchen/terraform/inspec/fail_slow_with_hosts.rb +1 -1
  74. data/lib/kitchen/terraform/inspec/without_hosts.rb +1 -1
  75. data/lib/kitchen/terraform/inspec_factory.rb +1 -1
  76. data/lib/kitchen/terraform/inspec_options_factory.rb +1 -1
  77. data/lib/kitchen/terraform/inspec_runner.rb +1 -1
  78. data/lib/kitchen/terraform/outputs_manager.rb +1 -1
  79. data/lib/kitchen/terraform/outputs_parser.rb +1 -1
  80. data/lib/kitchen/terraform/outputs_reader.rb +2 -2
  81. data/lib/kitchen/terraform/provisioner.rb +1 -1
  82. data/lib/kitchen/terraform/provisioner/converge.rb +6 -6
  83. data/lib/kitchen/terraform/raise.rb +1 -1
  84. data/lib/kitchen/terraform/raise/action_failed.rb +1 -1
  85. data/lib/kitchen/terraform/raise/client_error.rb +1 -1
  86. data/lib/kitchen/terraform/shell_out.rb +2 -2
  87. data/lib/kitchen/terraform/system.rb +1 -1
  88. data/lib/kitchen/terraform/system_attrs_inputs_resolver.rb +1 -1
  89. data/lib/kitchen/terraform/system_attrs_outputs_resolver.rb +1 -1
  90. data/lib/kitchen/terraform/system_bastion_host_resolver.rb +1 -1
  91. data/lib/kitchen/terraform/system_hosts_resolver.rb +1 -1
  92. data/lib/kitchen/terraform/system_inspec_map.rb +1 -1
  93. data/lib/kitchen/terraform/systems_verifier.rb +1 -1
  94. data/lib/kitchen/terraform/systems_verifier/fail_fast.rb +1 -1
  95. data/lib/kitchen/terraform/systems_verifier/fail_slow.rb +1 -1
  96. data/lib/kitchen/terraform/systems_verifier_factory.rb +1 -1
  97. data/lib/kitchen/terraform/unsupported_client_version_error.rb +1 -1
  98. data/lib/kitchen/terraform/variables_manager.rb +1 -1
  99. data/lib/kitchen/terraform/verify_version.rb +1 -1
  100. data/lib/kitchen/terraform/verify_version_rescue_strategy.rb +1 -1
  101. data/lib/kitchen/terraform/verify_version_rescue_strategy/permissive.rb +1 -1
  102. data/lib/kitchen/terraform/verify_version_rescue_strategy/strict.rb +1 -1
  103. data/lib/kitchen/terraform/verify_version_rescue_strategy_factory.rb +1 -1
  104. data/lib/kitchen/terraform/version.rb +2 -2
  105. data/lib/kitchen/terraform/version_verifier.rb +1 -1
  106. data/lib/kitchen/terraform/version_verifier_strategy.rb +1 -1
  107. data/lib/kitchen/terraform/version_verifier_strategy/supported.rb +1 -1
  108. data/lib/kitchen/terraform/version_verifier_strategy/unsupported.rb +1 -1
  109. data/lib/kitchen/terraform/version_verifier_strategy_factory.rb +1 -1
  110. data/lib/kitchen/verifier/terraform.rb +1 -1
  111. metadata +60 -49
  112. metadata.gz.sig +0 -0
  113. data/lib/kitchen/terraform/config_predicates/hash_of_symbols_and_strings.rb +0 -81
  114. data/lib/kitchen/terraform/config_schemas/array_of_strings.rb +0 -38
  115. data/lib/kitchen/terraform/config_schemas/optional_string.rb +0 -38
  116. data/lib/kitchen/terraform/config_schemas/system.rb +0 -609
  117. data/lib/kitchen/terraform/config_schemas/systems.rb +0 -37
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright 2016-2019 New Context, Inc.
3
+ # Copyright 2016-2021 Copado NCS LLC
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.
@@ -16,7 +16,7 @@
16
16
 
17
17
  require "kitchen"
18
18
  require "kitchen/terraform/config_attribute"
19
- require "kitchen/terraform/config_schemas/boolean"
19
+ require "kitchen/terraform/config_attribute_contract/boolean"
20
20
 
21
21
  module Kitchen
22
22
  module Terraform
@@ -37,7 +37,7 @@ module Kitchen
37
37
  default_value: lambda do
38
38
  ::Kitchen.tty?
39
39
  end,
40
- schema: ::Kitchen::Terraform::ConfigSchemas::Boolean,
40
+ schema: ::Kitchen::Terraform::ConfigAttributeContract::Boolean.new,
41
41
  ).apply config_attribute: self
42
42
  end
43
43
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright 2016-2019 New Context, Inc.
3
+ # Copyright 2016-2021 Copado NCS LLC
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.
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright 2016-2019 New Context, Inc.
3
+ # Copyright 2016-2021 Copado NCS LLC
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.
@@ -16,7 +16,7 @@
16
16
 
17
17
  require "kitchen"
18
18
  require "kitchen/terraform/config_attribute"
19
- require "kitchen/terraform/config_schemas/boolean"
19
+ require "kitchen/terraform/config_attribute_contract/boolean"
20
20
 
21
21
  module Kitchen
22
22
  module Terraform
@@ -36,7 +36,7 @@ module Kitchen
36
36
  default_value: lambda do
37
37
  true
38
38
  end,
39
- schema: ::Kitchen::Terraform::ConfigSchemas::Boolean,
39
+ schema: ::Kitchen::Terraform::ConfigAttributeContract::Boolean.new,
40
40
  ).apply config_attribute: self
41
41
  end
42
42
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright 2016-2019 New Context, Inc.
3
+ # Copyright 2016-2021 Copado NCS LLC
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.
@@ -16,7 +16,7 @@
16
16
 
17
17
  require "kitchen"
18
18
  require "kitchen/terraform/config_attribute"
19
- require "kitchen/terraform/config_schemas/boolean"
19
+ require "kitchen/terraform/config_attribute_contract/boolean"
20
20
 
21
21
  module Kitchen
22
22
  module Terraform
@@ -33,7 +33,7 @@ module Kitchen
33
33
  default_value: lambda do
34
34
  true
35
35
  end,
36
- schema: ::Kitchen::Terraform::ConfigSchemas::Boolean,
36
+ schema: ::Kitchen::Terraform::ConfigAttributeContract::Boolean.new,
37
37
  ).apply config_attribute: self
38
38
  end
39
39
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright 2016-2019 New Context, Inc.
3
+ # Copyright 2016-2021 Copado NCS LLC
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.
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright 2016-2019 New Context, Inc.
3
+ # Copyright 2016-2021 Copado NCS LLC
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.
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright 2016-2019 New Context, Inc.
3
+ # Copyright 2016-2021 Copado NCS LLC
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.
@@ -16,7 +16,7 @@
16
16
 
17
17
  require "kitchen/terraform/config_attribute"
18
18
  require "kitchen/terraform/config_attribute_cacher"
19
- require "kitchen/terraform/config_schemas/optional_string"
19
+ require "kitchen/terraform/config_attribute_contract/optional_string"
20
20
  require "kitchen/terraform/file_path_config_attribute_definer"
21
21
 
22
22
  module Kitchen
@@ -41,7 +41,7 @@ module Kitchen
41
41
  def included(plugin_class)
42
42
  ::Kitchen::Terraform::FilePathConfigAttributeDefiner.new(
43
43
  attribute: self,
44
- schema: ::Kitchen::Terraform::ConfigSchemas::OptionalString,
44
+ schema: ::Kitchen::Terraform::ConfigAttributeContract::OptionalString.new,
45
45
  ).define plugin_class: plugin_class
46
46
  end
47
47
 
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright 2016-2019 New Context, Inc.
3
+ # Copyright 2016-2021 Copado NCS LLC
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.
@@ -16,7 +16,7 @@
16
16
 
17
17
  require "kitchen/terraform/config_attribute"
18
18
  require "kitchen/terraform/config_attribute_cacher"
19
- require "kitchen/terraform/config_schemas/string"
19
+ require "kitchen/terraform/config_attribute_contract/string"
20
20
  require "kitchen/terraform/file_path_config_attribute_definer"
21
21
 
22
22
  module Kitchen
@@ -38,7 +38,7 @@ module Kitchen
38
38
  def included(plugin_class)
39
39
  ::Kitchen::Terraform::FilePathConfigAttributeDefiner.new(
40
40
  attribute: self,
41
- schema: ::Kitchen::Terraform::ConfigSchemas::String,
41
+ schema: ::Kitchen::Terraform::ConfigAttributeContract::String.new,
42
42
  ).define plugin_class: plugin_class
43
43
  end
44
44
 
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright 2016-2019 New Context, Inc.
3
+ # Copyright 2016-2021 Copado NCS LLC
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,21 +15,569 @@
15
15
  # limitations under the License.
16
16
 
17
17
  require "kitchen/terraform/config_attribute"
18
- require "kitchen/terraform/config_schemas/systems"
18
+ require "kitchen/terraform/config_attribute_contract/systems"
19
19
 
20
20
  module Kitchen
21
21
  module Terraform
22
22
  class ConfigAttribute
23
- # {include:Kitchen::Terraform::ConfigSchemas::Systems}
23
+ # The value of the +systems+ key must be a sequence of systems.
24
24
  #
25
25
  # If the +systems+ key is omitted then no tests will be executed.
26
+ #
27
+ # A system is a mapping which is used to configure the execution of {https://www.inspec.io/docs/ InSpec tests}
28
+ # against a system in the Terraform state. The keys of a system mapping correlate to the arguments and the
29
+ # options of the {https://www.inspec.io/docs/reference/cli/#exec +inspec exec+} command-line interface
30
+ # subcomamand.
31
+ #
32
+ # ===== InSpec Profiles
33
+ #
34
+ # All systems within the same {https://kitchen.ci/docs/getting-started/adding-suite Kitchen suite} are by default
35
+ # tested using the same {https://www.inspec.io/docs/reference/profiles/ InSpec profile}. The profile must be
36
+ # implemented in the directory located at `<Kitchen root>/test/integration/<suite name>`. This behaviour can be
37
+ # overridden with the <code>profile_locations</code> key.
38
+ #
39
+ # The values of any {https://www.terraform.io/docs/configuration/variables.html Terraform variables} configured
40
+ # with the driver's <code>variables</code> attribute and the values of any
41
+ # {https://www.terraform.io/docs/configuration/outputs.html Terraform outputs} which exist in the Terraform state
42
+ # are associated with equivalently named
43
+ # {https://www.inspec.io/docs/reference/profiles/#profile-attributes InSpec profile attributes}, prefixed with
44
+ # <code>input_</code> or <code>output_</code>, respectively. The values of the outputs are also associated with
45
+ # equivalently named profile attributes without any prefixes for backward compatibility. Output associations can
46
+ # be overridden with the <code>attrs_outputs</code> key. For example, the value of a variable named `test` will
47
+ # be associated with an attribute named `input_test`, and the value of an output named `test` will be associated
48
+ # with an attribute named `output_test` as well as an attribute named `test`.
49
+ #
50
+ # ===== Required Keys
51
+ #
52
+ # The following keys must be included by every system.
53
+ #
54
+ # ====== name
55
+ #
56
+ # The value of the +name+ key is a scalar which is used to refer to the system for logging purposes.
57
+ #
58
+ # <em>Example kitchen.yml</em>
59
+ # verifier:
60
+ # name: terraform
61
+ # systems:
62
+ # - name: a system
63
+ # backend: local
64
+ #
65
+ # ====== backend
66
+ #
67
+ # The value of the +backend+ key is a scalar which is used to select the
68
+ # {https://www.inspec.io/docs/reference/cli/#exec InSpec backend} for connections to the system.
69
+ #
70
+ # The scalar must match the name of one the available backends.
71
+ #
72
+ # <em>Example kitchen.yml</em>
73
+ # verifier:
74
+ # name: terraform
75
+ # systems:
76
+ # - name: a system
77
+ # backend: docker
78
+ #
79
+ # ===== Optional Keys
80
+ #
81
+ # The following keys may be included by any system to alter the behaviour of InSpec. Any key which is omitted
82
+ # will be associated with a default value as defined by InSpec except where otherwise noted.
83
+ #
84
+ # ====== attrs
85
+ #
86
+ # The value of the +attrs+ key is a sequence of scalars which is used to locate any
87
+ # {https://www.inspec.io/docs/reference/profiles/#profile-attributes InSpec profile attributes} files.
88
+ #
89
+ # <em>Example kitchen.yml</em>
90
+ # verifier:
91
+ # name: terraform
92
+ # systems:
93
+ # - name: a system
94
+ # backend: local
95
+ # attrs:
96
+ # - /path/to/first_attributes.yml
97
+ # - /path/to/second_attributes.yml
98
+ #
99
+ # ====== attrs_outputs
100
+ #
101
+ # The value of the +attrs_outputs+ key is a mapping of scalars to scalars which is used to define
102
+ # {https://www.inspec.io/docs/reference/profiles/#profile-attributes InSpec profile attributes} with the values
103
+ # of Terraform outputs.
104
+ #
105
+ # The use of the +attrs_outputs+ key is only necessary to override the default definitions of profile attributes
106
+ # with names and values equivalent to the outputs.
107
+ #
108
+ # <em>Example kitchen.yml</em>
109
+ # verifier:
110
+ # name: terraform
111
+ # systems:
112
+ # - name: a system
113
+ # backend: local
114
+ # attrs_outputs:
115
+ # an_attribute_name: an_output_name
116
+ #
117
+ # ====== backend_cache
118
+ #
119
+ # The value of the +backend_cache+ key is a boolean which is used to toggle the caching of InSpec backend command
120
+ # output.
121
+ #
122
+ # <em>Example kitchen.yml</em>
123
+ # verifier:
124
+ # name: terraform
125
+ # systems:
126
+ # - name: a system
127
+ # backend: local
128
+ # backend_cache: false
129
+ #
130
+ # ====== bastion_host
131
+ #
132
+ # The value of the +bastion_host+ key is a scalar which is used as the hostname of a
133
+ # {https://en.wikipedia.org/wiki/Bastion_host bastion host} to connect to before connecting to hosts in the
134
+ # system.
135
+ #
136
+ # The +bastion_host+ key must be used in combination with a backend which supports remote connections.
137
+ #
138
+ # The +bastion_host_output+ key will take priority over the +bastion_host+ key.
139
+ #
140
+ # <em>Example kitchen.yml</em>
141
+ # verifier:
142
+ # name: terraform
143
+ # systems:
144
+ # - name: a system
145
+ # backend: ssh
146
+ # bastion_host: bastion-host.domain
147
+ #
148
+ # ====== bastion_host_output
149
+ #
150
+ # The value of the +bastion_host_output+ key is a scalar which is used to obtain the address of a bastion host in
151
+ # the system from a Terraform output.
152
+ #
153
+ # The scalar must match the name of an output with a value which is a string.
154
+ #
155
+ # The +bastion_host_output+ key must be used in combination with a backend which enables remote connections.
156
+ #
157
+ # <em>Example kitchen.yml</em>
158
+ # verifier:
159
+ # name: terraform
160
+ # systems:
161
+ # - name: a system
162
+ # backend: ssh
163
+ # bastion_host_output: an_output
164
+ #
165
+ # ====== bastion_port
166
+ #
167
+ # The value of the +bastion_port+ key is an integer which is used as the port number to connect to on the bastion
168
+ # host.
169
+ #
170
+ # The +bastion_port+ key must be used in combination with the +bastion_host_output+ key or the +bastion_host+ key.
171
+ #
172
+ # <em>Example kitchen.yml</em>
173
+ # verifier:
174
+ # name: terraform
175
+ # systems:
176
+ # - name: a system
177
+ # backend: ssh
178
+ # bastion_host_output: an_output
179
+ # bastion_port: 1234
180
+ #
181
+ # ====== bastion_user
182
+ #
183
+ # The value of the +bastion_user+ key is a scalar which is used as the username for authentication with the
184
+ # bastion host.
185
+ #
186
+ # The +bastion_user+ key must be used in combination with the +bastion_host_output+ key or the +bastion_host+ key.
187
+ #
188
+ # <em>Example kitchen.yml</em>
189
+ # verifier:
190
+ # name: terraform
191
+ # systems:
192
+ # - name: a system
193
+ # backend: ssh
194
+ # bastion_host_output: an_output
195
+ # bastion_user: bastion-user
196
+ #
197
+ # ====== controls
198
+ #
199
+ # The value of the +controls+ key is a sequence of scalars which is used to select for execution against the
200
+ # system a subset of the {https://www.inspec.io/docs/reference/dsl_inspec/ InSpec controls} of the profile.
201
+ #
202
+ # The use of the +controls+ key is only necessary if the system should not be tested with all of the controls of # the profile.
203
+ #
204
+ # The scalars must match the names of the controls, not the names of the control files.
205
+ #
206
+ # <em>Example kitchen.yml</em>
207
+ # verifier:
208
+ # name: terraform
209
+ # systems:
210
+ # - name: first system
211
+ # backend: local
212
+ # controls:
213
+ # - first control
214
+ # - third control
215
+ # - name: second system
216
+ # backend: local
217
+ # controls:
218
+ # - second control
219
+ # - fourth control
220
+ #
221
+ # ====== enable_password
222
+ #
223
+ # The value of the +enable_password+ key is a scalar which is used as the password for authentication with a
224
+ # Cisco IOS device in enable mode.
225
+ #
226
+ # The +enable_password+ key must be used in combination with <tt>backend: ssh</tt>.
227
+ #
228
+ # <em>Example kitchen.yml</em>
229
+ # verifier:
230
+ # name: terraform
231
+ # systems:
232
+ # - name: a system
233
+ # backend: ssh
234
+ # enable_password: Cisc0!
235
+ #
236
+ # ====== hosts
237
+ #
238
+ # The value of the +hosts+ key is a sequence of scalars which is used as addresses of hosts in the system.
239
+ #
240
+ # The +hosts+ key must be used in combination with a backend which enables remote connections.
241
+ #
242
+ # <em>Example kitchen.yml</em>
243
+ # verifier:
244
+ # name: terraform
245
+ # systems:
246
+ # - name: a system
247
+ # backend: ssh
248
+ # hosts:
249
+ # - hostname.domainname
250
+ #
251
+ # ====== hosts_output
252
+ #
253
+ # The value of the +hosts_output+ key is a scalar which is used to obtain the addresses of hosts in the system
254
+ # from a Terraform output.
255
+ #
256
+ # The scalar must match the name of an output with a value which is a string or an array of strings.
257
+ #
258
+ # The +hosts_output+ key must be used in combination with a backend which enables remote connections.
259
+ #
260
+ # <em>Example kitchen.yml</em>
261
+ # verifier:
262
+ # name: terraform
263
+ # systems:
264
+ # - name: a system
265
+ # backend: ssh
266
+ # hosts_output: an_output
267
+ #
268
+ # ====== key_files
269
+ #
270
+ # The value of the +key_files+ key is a sequence of scalars which is used to locate key files (also known as
271
+ # identity files) for {https://linux.die.net/man/1/ssh Secure Shell (SSH) authentication} with hosts in the
272
+ # Terraform state.
273
+ #
274
+ # The +key_files+ key must be used in combination with <tt>backend: ssh</tt>.
275
+ #
276
+ # <em>Example kitchen.yml</em>
277
+ # verifier:
278
+ # name: terraform
279
+ # systems:
280
+ # - name: a system
281
+ # backend: ssh
282
+ # key_files:
283
+ # - /path/to/first/key/file
284
+ # - /path/to/second/key/file
285
+ #
286
+ # ====== password
287
+ #
288
+ # The value of the +password+ key is a scalar which is used as the password for authentication with hosts in the
289
+ # system.
290
+ #
291
+ # The +password+ key must be used in combination with a backend which supports password authentication.
292
+ #
293
+ # <em>Example kitchen.yml</em>
294
+ # verifier:
295
+ # name: terraform
296
+ # systems:
297
+ # - name: a system
298
+ # backend: ssh
299
+ # password: Th3P455I5Th3W0rd
300
+ #
301
+ # ====== path
302
+ #
303
+ # The value of the +path+ key is a scalar which is used as the login path when connecting to a host in the system.
304
+ #
305
+ # The +path+ key must be used in combination with <tt>backend: winrm</tt>.
306
+ #
307
+ # <em>Example kitchen.yml</em>
308
+ # verifier:
309
+ # name: terraform
310
+ # systems:
311
+ # - name: a system
312
+ # backend: winrm
313
+ # path: /login
314
+ #
315
+ # ====== port
316
+ #
317
+ # The value of the +port+ key is an integer which is used as the port number when connecting via SSH to the hosts
318
+ # of the system.
319
+ #
320
+ # The +port+ key must be used in combination with <tt>backend: ssh</tt>.
321
+ #
322
+ # If the +port+ key is omitted then the value of the +port+ key of the Test Kitchen transport will be used.
323
+ #
324
+ # <em>Example kitchen.yml</em>
325
+ # verifier:
326
+ # name: terraform
327
+ # systems:
328
+ # - name: a system
329
+ # backend: ssh
330
+ # port: 1234
331
+ #
332
+ # ====== profile_locations
333
+ #
334
+ # The value of the <code>profile_locations</code> key is a sequence of scalars which is used to locate
335
+ # {https://www.inspec.io/docs/reference/profiles/ InSpec profiles} containing the controls to be executed against
336
+ # the system. This key corresponds to the LOCATIONS argument of <code>inspec exec</code>.
337
+ #
338
+ # The default value contains a single scalar which assumes that a profile exists locally for the associated
339
+ # {https://kitchen.ci/docs/getting-started/adding-suite Kitchen suite} at
340
+ # <code><KITCHEN ROOT>/test/integration/<KITCHEN SUITE NAME></code>.
341
+ #
342
+ # <em>Example kitchen.yml</em>
343
+ # verifier:
344
+ # name: terraform
345
+ # systems:
346
+ # - name: a system
347
+ # backend: local
348
+ # profile_locations:
349
+ # - supermarket://username/linux-baseline
350
+ # - /path/to/profile
351
+ # - /path/to/a_test.rb
352
+ #
353
+ # ====== proxy_command
354
+ #
355
+ # The value of the +proxy_command+ key is a scalar which is used as a proxy command when connecting to a host via
356
+ # SSH.
357
+ #
358
+ # The +proxy_command+ key must be used in combination with <tt>backend: ssh</tt>.
359
+ #
360
+ # <em>Example kitchen.yml</em>
361
+ # verifier:
362
+ # name: terraform
363
+ # systems:
364
+ # - name: a system
365
+ # backend: ssh
366
+ # proxy_command: ssh root@127.0.0.1 -W %h:%p
367
+ #
368
+ # ====== reporter
369
+ #
370
+ # The value of the +reporter+ key is a sequence of scalars which is used to select the
371
+ # {https://www.inspec.io/docs/reference/reporters/#supported-reporters InSpec reporters}
372
+ # for reporting test output.
373
+ #
374
+ # The scalars must match the names of the available reporters.
375
+ #
376
+ # <em>Example kitchen.yml</em>
377
+ # verifier:
378
+ # name: terraform
379
+ # systems:
380
+ # - name: a system
381
+ # backend: local
382
+ # reporter:
383
+ # - cli
384
+ # - documentation
385
+ #
386
+ # ====== self_signed
387
+ #
388
+ # The value of the +self_signed+ key is a boolean which is used to toggle permission for self-signed certificates
389
+ # during testing of Windows hosts.
390
+ #
391
+ # The +self_signed+ key must be used in combination with <tt>backend: winrm</tt>.
392
+ #
393
+ # <em>Example kitchen.yml</em>
394
+ # verifier:
395
+ # name: terraform
396
+ # systems:
397
+ # - name: a system
398
+ # backend: winrm
399
+ # self_signed: true
400
+ #
401
+ # ====== shell
402
+ #
403
+ # The value of the +shell+ key is a boolean which is used to toggle the use of a subshell when executing tests on
404
+ # hosts in the system.
405
+ #
406
+ # The +shell+ key is only effective for a system which has Unix-like hosts.
407
+ #
408
+ # <em>Example kitchen.yml</em>
409
+ # verifier:
410
+ # name: terraform
411
+ # systems:
412
+ # - name: a system
413
+ # backend: ssh
414
+ # hosts_output: an_output
415
+ # shell: true
416
+ #
417
+ # ====== shell_command
418
+ #
419
+ # The value of the +shell_command+ key is a scalar which is used to override the default shell command used to
420
+ # instantiate a subshell.
421
+ #
422
+ # The +shell_command+ key must be used in combination with <tt>shell: true</tt>.
423
+ #
424
+ # <em>Example kitchen.yml</em>
425
+ # verifier:
426
+ # name: terraform
427
+ # systems:
428
+ # - name: a system
429
+ # backend: ssh
430
+ # hosts_output: an_output
431
+ # shell: true
432
+ # shell_command: /bin/ksh
433
+ #
434
+ # ====== shell_options
435
+ #
436
+ # The value of the +shell_options+ key is a scalar which is used to provide options to the subshell.
437
+ #
438
+ # The +shell_options+ key must be used in combination with <tt>shell: true</tt>.
439
+ #
440
+ # <em>Example kitchen.yml</em>
441
+ # verifier:
442
+ # name: terraform
443
+ # systems:
444
+ # - name: a system
445
+ # backend: ssh
446
+ # hosts_output: an_output
447
+ # shell: true
448
+ # shell_options: -v
449
+ #
450
+ # ====== show_progress
451
+ #
452
+ # The value of the +show_progress+ key is a boolean which is used to toggle the display of progress while tests
453
+ # are executing.
454
+ #
455
+ # <em>Example kitchen.yml</em>
456
+ # verifier:
457
+ # name: terraform
458
+ # systems:
459
+ # - name: a system
460
+ # backend: local
461
+ # show_progress: false
462
+ #
463
+ # ====== ssl
464
+ #
465
+ # The value of the +ssl+ key is a boolean which is used to toggle the use of
466
+ # {https://en.wikipedia.org/wiki/Transport_Layer_Security Transport Layer Security (TLS)} when connecting to
467
+ # hosts in the system. InSpec's reference to Secure Socket Layer (SSL) is a misnomer as that protocol has been
468
+ # deprecated in favour of TLS.
469
+ #
470
+ # The +ssl+ key must be used in combination with <tt>backend: winrm</tt>.
471
+ #
472
+ # <em>Example kitchen.yml</em>
473
+ # verifier:
474
+ # name: terraform
475
+ # systems:
476
+ # - name: a system
477
+ # backend: winrm
478
+ # ssl: true
479
+ #
480
+ # ====== sudo
481
+ #
482
+ # The value of the +sudo+ key is a boolean which is used to toggle the use of
483
+ # {https://en.wikipedia.org/wiki/Sudo sudo} for obtaining superuser permissions when executing tests on hosts in
484
+ # the system.
485
+ #
486
+ # The +sudo+ key is only effective for a system which has Unix-like hosts.
487
+ #
488
+ # <em>Example kitchen.yml</em>
489
+ # verifier:
490
+ # name: terraform
491
+ # systems:
492
+ # - name: a system
493
+ # backend: ssh
494
+ # hosts_output: an_output
495
+ # sudo: true
496
+ #
497
+ # ====== sudo_command
498
+ #
499
+ # The value of the +sudo_command+ key is a scalar which is used to override the default command used to
500
+ # invoke sudo.
501
+ #
502
+ # The +sudo_command+ key must be used in combination with <tt>sudo: true</tt>.
503
+ #
504
+ # <em>Example kitchen.yml</em>
505
+ # verifier:
506
+ # name: terraform
507
+ # systems:
508
+ # - name: a system
509
+ # backend: ssh
510
+ # hosts_output: an_output
511
+ # sudo: true
512
+ # sudo_command: /bin/sudo
513
+ #
514
+ # ====== sudo_options
515
+ #
516
+ # The value of the +sudo_options+ key is a scalar which is used to provide options to the sudo command.
517
+ #
518
+ # The +sudo_options+ key must be used in combination with <tt>sudo: true</tt>.
519
+ #
520
+ # <em>Example kitchen.yml</em>
521
+ # verifier:
522
+ # name: terraform
523
+ # systems:
524
+ # - name: a system
525
+ # backend: ssh
526
+ # hosts_output: an_output
527
+ # sudo: true
528
+ # sudo_options: -u admin
529
+ #
530
+ # ====== sudo_password
531
+ #
532
+ # The value of the +sudo_password+ key is a scalar which is used as the password for authentication with the sudo
533
+ # command.
534
+ #
535
+ # The +sudo_password+ key must be used in combination with <tt>sudo: true</tt>.
536
+ #
537
+ # <em>Example kitchen.yml</em>
538
+ # verifier:
539
+ # name: terraform
540
+ # systems:
541
+ # - name: a system
542
+ # backend: ssh
543
+ # hosts_output: an_output
544
+ # sudo: true
545
+ # sudo_password: Th3P455I5Th3W0rd
546
+ #
547
+ # ====== user
548
+ #
549
+ # The value of the +user+ key is a scalar which is used as the username for authentication with hosts in the
550
+ # system.
551
+ #
552
+ # The +user+ key must be used in combination with a backend which supports user authentication.
553
+ #
554
+ # <em>Example kitchen.yml</em>
555
+ # verifier:
556
+ # name: terraform
557
+ # systems:
558
+ # - name: a system
559
+ # backend: ssh
560
+ # user: tester
561
+ #
562
+ # ====== vendor_cache
563
+ #
564
+ # The value of the +vendor_cache+ key is a scalar which is used as the pathname of the directory in which InSpec
565
+ # will cache dependencies of the profile.
566
+ #
567
+ # <em>Example kitchen.yml</em>
568
+ # verifier:
569
+ # name: terraform
570
+ # systems:
571
+ # - name: a system
572
+ # backend: local
573
+ # vendor_cache: /opt/inspec-cache
26
574
  module Systems
27
575
  ::Kitchen::Terraform::ConfigAttribute.new(
28
576
  attribute: :systems,
29
577
  default_value: lambda do
30
578
  []
31
579
  end,
32
- schema: ::Kitchen::Terraform::ConfigSchemas::Systems,
580
+ schema: ::Kitchen::Terraform::ConfigAttributeContract::Systems.new,
33
581
  ).apply config_attribute: self
34
582
  end
35
583
  end