ruby-terraform 0.65.0.pre.14 → 0.65.0.pre.15

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 897da01f6ce70cf4c6f38c95d50a49c620da02e78078c1da7a14daa2f7f15f11
4
- data.tar.gz: 476f49771b6acd39233c7b36987b397556ada57fc5bf5d4eeccec42bfe414ea0
3
+ metadata.gz: 856fa5b4cbf4a93f6a7e9d0c7abab4a25c56e362c33f1182762d9fe70f3c8520
4
+ data.tar.gz: 695688910f5e277ae91649169e1e9bbfe4ef6fe2fbc4a4c1f3b4f3b4559701b5
5
5
  SHA512:
6
- metadata.gz: 98e74c44146a22196085aaa288c9ac93cf94ebb17aacd9e16473de232c0e9e87f59682df2978c8902f561f2e4ae040e57398f550c7a3fc359fba80e184615fb9
7
- data.tar.gz: 98f3870cf241284aa5197012e72d7132e6e5a52f9e70724b07a65231c8605a7020aaa064b9920240d4e02585df0cd05cd664c411113589e79fc288cc5b24845c
6
+ metadata.gz: 1aa00badf71f9f0db717c7a06a4806e7225b6b6005f61601043af3975ebbacb6e82826d24f792a3b602365178711f3a0b4a010b642dbb5c3be300e0f8955a202
7
+ data.tar.gz: faf27462271fc0c7a04b38e0221590c33e2fb25679816317509744c3ddfd6024200587cb0c92cc3eeb7e12290a48bb105c05ddc16e3deb30144cd033889bda6e
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ruby-terraform (0.65.0.pre.14)
4
+ ruby-terraform (0.65.0.pre.15)
5
5
  immutable-struct (>= 2.4)
6
6
  lino (>= 2.5)
7
7
 
data/README.md CHANGED
@@ -37,23 +37,6 @@ In addition, each command that requires the terraform binary (all except
37
37
  `clean`) takes a `binary` keyword argument at initialisation that overrides the
38
38
  global configuration value.
39
39
 
40
- Currently, there is partial support for the following commands:
41
- * `RubyTerraform::Commands::Clean`: clean up all locally held terraform state
42
- and modules.
43
- * `RubyTerraform::Commands::Init`: executes `terraform init`
44
- * `RubyTerraform::Commands::Get`: executes `terraform get`
45
- * `RubyTerraform::Commands::Plan`: executes `terraform plan`
46
- * `RubyTerraform::Commands::Apply`: executes `terraform apply`
47
- * `RubyTerraform::Commands::Show`: executes `terraform show`
48
- * `RubyTerraform::Commands::Destroy`: executes `terraform destroy`
49
- * `RubyTerraform::Commands::Output`: executes `terraform output`
50
- * `RubyTerraform::Commands::Refresh`: executes `terraform refresh`
51
- * `RubyTerraform::Commands::Import`: executes `terraform import`
52
- * `RubyTerraform::Commands::RemoteConfig`: executes `terraform remote config`
53
- * `RubyTerraform::Commands::Format`: executes `terraform fmt`
54
- * `RubyTerraform::Commands::Validate`: executes `terraform validate`
55
- * `RubyTerraform::Commands::Workspace`: executes `terraform workspace`
56
-
57
40
  ### RubyTerraform::Commands::Clean
58
41
 
59
42
  The clean command can be called in the following ways:
@@ -325,14 +308,14 @@ RubyTerraform.import(
325
308
  id: 'a-resource-id',
326
309
  vars: {
327
310
  region: 'eu-central'
328
- }))
311
+ })
329
312
  RubyTerraform::Commands::Import.new.execute(
330
313
  directory: 'infra/networking',
331
314
  address: 'a.resource.address',
332
315
  id: 'a-resource-id',
333
316
  vars: {
334
317
  region: 'eu-central'
335
- }))
318
+ })
336
319
  ```
337
320
 
338
321
  The import command supports the following options passed as keyword arguments:
@@ -38,14 +38,14 @@ module RubyTerraform
38
38
  # configuration; required unless +:plan+ is provided.
39
39
  # @option parameters [String] :plan The path to a pre-computed plan to be
40
40
  # applied; required unless +:directory+ is provided.
41
+ # @option parameters [String] :chdir The path of a working directory to
42
+ # switch to before executing the given subcommand.
41
43
  # @option parameters [Boolean] :auto_approve (false) If +true+, skips
42
44
  # interactive approval of the generated plan before applying.
43
45
  # @option parameters [String] :backup The path to backup the existing state
44
46
  # file before modifying; defaults to the +:state_out+ path with
45
47
  # +".backup"+ extension; set +:no_backup+ to +true+ to skip backups
46
48
  # entirely.
47
- # @option parameters [String] :chdir The path of a working directory to
48
- # switch to before executing the given subcommand.
49
49
  # @option parameters [Boolean] :compact_warnings (false) When +true+, if
50
50
  # terraform produces any warnings that are not accompanied by errors,
51
51
  # they are shown in a more compact form that includes only the summary
@@ -97,22 +97,612 @@ module RubyTerraform
97
97
  exec(RubyTerraform::Commands::Apply, parameters)
98
98
  end
99
99
 
100
+ # Invokes the +terraform destroy+ command which destroys terraform managed
101
+ # infrastructure.
102
+ #
103
+ # @param parameters The parameters used to invoke the command
104
+ # @option parameters [String] :directory The directory containing terraform
105
+ # configuration; required.
106
+ # @option parameters [String] :chdir The path of a working directory to
107
+ # switch to before executing the given subcommand.
108
+ # @option parameters [Boolean] :auto_approve (false) If +true+, skips
109
+ # interactive approval before destroying.
110
+ # @option parameters [String] :backup The path to backup the existing state
111
+ # file before modifying; defaults to the +:state_out+ path with
112
+ # +".backup"+ extension; set +:no_backup+ to +true+ to skip backups
113
+ # entirely (legacy).
114
+ # @option parameters [Boolean] :compact_warnings (false) When +true+, if
115
+ # terraform produces any warnings that are not accompanied by errors,
116
+ # they are shown in a more compact form that includes only the summary
117
+ # messages.
118
+ # @option parameters [Boolean] :input (true) When +false+, will not ask for
119
+ # input for variables not directly set.
120
+ # @option parameters [Boolean] :lock (true) When +true+, locks the state
121
+ # file when locking is supported; when +false+, does not lock the state
122
+ # file.
123
+ # @option parameters [String] :lock_timeout ("0s") The duration to retry a
124
+ # state lock.
125
+ # @option parameters [Boolean] :no_backup (false) When +true+, no backup
126
+ # file will be written (legacy).
127
+ # @option parameters [Boolean] :no_color (false) Whether or not the output
128
+ # from the command should be in color.
129
+ # @option parameters [Integer] :parallelism (10) The number of parallel
130
+ # resource operations.
131
+ # @option parameters [Boolean] :refresh (true) When +true+, updates state
132
+ # prior to checking for differences; when +false+ uses locally available
133
+ # state.
134
+ # @option parameters [String] :state ("terraform.tfstate") The path to the
135
+ # state file from which to read state and in which to store state (unless
136
+ # +:state_out+ is specified) (legacy).
137
+ # @option parameters [String] :state_out The path to write state to that is
138
+ # different than +:state+; this can be used to preserve the old state
139
+ # (legacy).
140
+ # @option parameters [String] :target The address of a resource to target;
141
+ # if both +:target+ and +:targets+ are provided, all targets will be
142
+ # passed to terraform.
143
+ # @option parameters [Array<String>] :targets An array of resource addresses
144
+ # to target; if both +:target+ and +:targets+ are provided, all targets
145
+ # will be passed to terraform.
146
+ # @option parameters [Hash<String, Object>] :vars A map of variables to be
147
+ # passed to the terraform configuration.
148
+ # @option parameters [String] :var_file The path to a terraform var file;
149
+ # if both +:var_file+ and +:var_files+ are provided, all var files will be
150
+ # passed to terraform.
151
+ # @option parameters [Array<String>] :var_files An array of paths to
152
+ # terraform var files; if both +:var_file+ and +:var_files+ are provided,
153
+ # all var files will be passed to terraform.
154
+ #
155
+ # @example Basic Invocation
156
+ # RubyTerraform.destroy(
157
+ # directory: 'infra/networking',
158
+ # vars: {
159
+ # region: 'eu-central'
160
+ # })
161
+ #
162
+ def destroy(parameters = {})
163
+ exec(RubyTerraform::Commands::Destroy, parameters)
164
+ end
165
+
166
+ # Invokes the +terraform force-unlock+ command which manually unlocks the
167
+ # state for the defined configuration.
168
+ #
169
+ # This will not modify your infrastructure. This command removes the lock on
170
+ # the state for the current workspace. The behavior of this lock is
171
+ # dependent on the backend being used. Local state files cannot be unlocked
172
+ # by another process.
173
+ #
174
+ # @param parameters The parameters used to invoke the command
175
+ # @option parameters [String] :lock_id The lock ID output when attempting an
176
+ # operation that failed due to a lock; required.
177
+ # @option parameters [String] :chdir The path of a working directory to
178
+ # switch to before executing the given subcommand.
179
+ # @option parameters [Boolean] :force (false) If +true+, does not ask for
180
+ # input for unlock confirmation.
181
+ #
182
+ # @example Basic Invocation
183
+ # RubyTerraform.force_unlock(
184
+ # lock_id: '50e844a7-ebb0-fcfd-da85-5cce5bd1ec90')
185
+ #
186
+ def force_unlock(parameters = {})
187
+ exec(RubyTerraform::Commands::ForceUnlock, parameters)
188
+ end
189
+
190
+ # Invokes the +terraform fmt+ command which rewrites all terraform
191
+ # configuration files to a canonical format.
192
+ #
193
+ # Both configuration files (.tf) and variables files (.tfvars) are updated.
194
+ # JSON files (.tf.json or .tfvars.json) are not modified.
195
+ #
196
+ # If +:directory+ is not specified in the parameters map then the current
197
+ # working directory will be used. If +:directory+ is +"-"+ then content will
198
+ # be read from the standard input. The given content must be in the
199
+ # terraform language native syntax; JSON is not supported.
200
+ #
201
+ # @param parameters The parameters used to invoke the command
202
+ # @option parameters [String] :directory The directory containing terraform
203
+ # configuration.
204
+ # @option parameters [String] :chdir The path of a working directory to
205
+ # switch to before executing the given subcommand.
206
+ # @option parameters [Boolean] :list (false) If +true+, lists files whose
207
+ # formatting differs; always disabled if using standard input.
208
+ # @option parameters [Boolean] :write (false) If +true+, writes to source
209
+ # files; always disabled if using standard input or +:check+ is +true+.
210
+ # @option parameters [Boolean] :diff (false) If +true+, displays diffs of
211
+ # formatting changes.
212
+ # @option parameters [Boolean] :check (false) If +true+, checks if the input
213
+ # is formatted; if any input is not properly formatted, an
214
+ # {RubyTerraform::Errors::ExecutionError} will be thrown.
215
+ # @option parameters [Boolean] :recursive (false) If +true+, also processes
216
+ # files in subdirectories; by default, only the provided +:directory+ is
217
+ # processed.
218
+ #
219
+ # @example Basic Invocation
220
+ # RubyTerraform.format(
221
+ # directory: 'infra/networking')
222
+ #
223
+ def format(parameters = {})
224
+ exec(RubyTerraform::Commands::Format, parameters)
225
+ end
226
+
227
+ # Invokes the +terraform get+ command which downloads and installs modules
228
+ # needed for the given configuration.
229
+ #
230
+ # This recursively downloads all modules needed, such as modules imported by
231
+ # the root and so on. If a module is already downloaded, it will not be
232
+ # redownloaded or checked for updates unless +:update+ is +true+.
233
+ #
234
+ # Module installation also happens automatically by default as part of
235
+ # the {.init} command, so you should rarely need to run this command
236
+ # separately.
237
+ #
238
+ # @param parameters The parameters used to invoke the command
239
+ # @option parameters [String] :directory The directory containing terraform
240
+ # configuration; required.
241
+ # @option parameters [String] :chdir The path of a working directory to
242
+ # switch to before executing the given subcommand.
243
+ # @option parameters [Boolean] :update (false) If +true+, checks
244
+ # already-downloaded modules for available updates and installs the
245
+ # newest versions available.
246
+ # @option parameters [Boolean] :no_color (false) Whether or not the output
247
+ # from the command should be in color.
248
+ #
249
+ # @example Basic Invocation
250
+ # RubyTerraform.get(
251
+ # directory: 'infra/networking')
252
+ #
253
+ def get(parameters = {})
254
+ exec(RubyTerraform::Commands::Get, parameters)
255
+ end
256
+
257
+ # Invokes the +terraform graph+ command which outputs the visual execution
258
+ # graph of terraform resources according to either the current configuration
259
+ # or an execution plan.
260
+ #
261
+ # The graph is outputted in DOT format. The typical program that can
262
+ # read this format is GraphViz, but many web services are also available to
263
+ # read this format.
264
+ #
265
+ # The +:type+ option can be used to control the type of graph shown.
266
+ # Terraform creates different graphs for different operations. See the
267
+ # options below for the list of types supported. The default type is
268
+ # +"plan"+ if a configuration is given, and +"apply"+ if a plan file is
269
+ # passed as an argument.
270
+ #
271
+ # @param parameters The parameters used to invoke the command
272
+ # @option parameters [String] :chdir The path of a working directory to
273
+ # switch to before executing the given subcommand.
274
+ # @option parameters [String] :plan Render the graph using the specified
275
+ # plan file instead of the configuration in the current directory.
276
+ # @option parameters [Boolean] :draw_cycles (false) If +true+, highlights
277
+ # any cycles in the graph with colored edges; this helps when diagnosing
278
+ # cycle errors.
279
+ # @option parameters [String] :type The type of graph to output; can be:
280
+ # +"plan"+, +"plan-destroy"+, +"apply"+, +"validate"+, +"input"+,
281
+ # +"refresh"+; defaults to +"apply"+ if +:plan+ is provided, +"plan"+
282
+ # otherwise.
283
+ # @option parameters [Integer] :module_depth In prior versions of terraform,
284
+ # specified the depth of modules to show in the output (deprecated).
285
+ #
286
+ # @example Basic Invocation
287
+ # RubyTerraform.graph
288
+ #
289
+ def graph(parameters = {})
290
+ exec(RubyTerraform::Commands::Graph, parameters)
291
+ end
292
+
293
+ # Invokes the +terraform import+ command which imports existing
294
+ # infrastructure into your terraform state.
295
+ #
296
+ # This will find and import the specified resource into your terraform
297
+ # state, allowing existing infrastructure to come under terraform
298
+ # management without having to be initially created by terraform.
299
+ #
300
+ # The +:address+ specified is the address to import the resource to. Please
301
+ # see the documentation online for resource addresses. The +:id+ is a
302
+ # resource-specific ID to identify that resource being imported. Please
303
+ # reference the documentation for the resource type you're importing to
304
+ # determine the ID syntax to use. It typically matches directly to the ID
305
+ # that the provider uses.
306
+ #
307
+ # The current implementation of terraform import can only import resources
308
+ # into the state. It does not generate configuration. A future version of
309
+ # terraform will also generate configuration.
310
+ #
311
+ # Because of this, prior to running terraform import it is necessary to
312
+ # write a resource configuration block for the resource manually, to which
313
+ # the imported object will be attached.
314
+ #
315
+ # This command will not modify your infrastructure, but it will make network
316
+ # requests to inspect parts of your infrastructure relevant to the resource
317
+ # being imported.
318
+ #
319
+ # @param parameters The parameters used to invoke the command
320
+ # @option parameters [String] :directory The path to a directory of
321
+ # terraform configuration files to use to configure the provider; defaults
322
+ # to the current directory; if no config files are present, they must be
323
+ # provided via the input prompts or env vars.
324
+ # @option parameters [String] :address The address to import the resource
325
+ # to; required.
326
+ # @option parameters [String] :id The resource-specific ID identifying the
327
+ # resource being imported; required.
328
+ # @option parameters [String] :chdir The path of a working directory to
329
+ # switch to before executing the given subcommand.
330
+ # @option parameters [String] :backup The path to backup the existing state
331
+ # file before modifying; defaults to the +:state_out+ path with
332
+ # +".backup"+ extension; set +:no_backup+ to +true+ to skip backups
333
+ # entirely (legacy).
334
+ # @option parameters [Boolean] :input (true) When +false+, will not ask for
335
+ # input for variables not directly set.
336
+ # @option parameters [Boolean] :lock (true) When +true+, locks the state
337
+ # file when locking is supported; when +false+, does not lock the state
338
+ # file.
339
+ # @option parameters [String] :lock_timeout ("0s") The duration to retry a
340
+ # state lock.
341
+ # @option parameters [Boolean] :no_backup (false) When +true+, no backup
342
+ # file will be written (legacy).
343
+ # @option parameters [Boolean] :no_color (false) Whether or not the output
344
+ # from the command should be in color.
345
+ # @option parameters [Integer] :parallelism (10) The number of parallel
346
+ # resource operations.
347
+ # @option parameters [String] :provider The provider configuration to use
348
+ # when importing the object; by default, terraform uses the provider
349
+ # specified in the configuration for the target resource, and that is the
350
+ # best behavior in most cases (deprecated).
351
+ # @option parameters [String] :state ("terraform.tfstate") The path to the
352
+ # state file from which to read state and in which to store state (unless
353
+ # +:state_out+ is specified) (legacy).
354
+ # @option parameters [String] :state_out The path to write state to that is
355
+ # different than +:state+; this can be used to preserve the old state
356
+ # (legacy).
357
+ # @option parameters [Hash<String, Object>] :vars A map of variables to be
358
+ # passed to the terraform configuration.
359
+ # @option parameters [String] :var_file The path to a terraform var file;
360
+ # if both +:var_file+ and +:var_files+ are provided, all var files will be
361
+ # passed to terraform.
362
+ # @option parameters [Array<String>] :var_files An array of paths to
363
+ # terraform var files; if both +:var_file+ and +:var_files+ are provided,
364
+ # all var files will be passed to terraform.
365
+ # @option parameters [Boolean] :ignore_remote_version (false) If +true+,
366
+ # when using the enhanced remote backend with Terraform Cloud, continue
367
+ # even if remote and local Terraform versions differ; this may result in
368
+ # an unusable Terraform Cloud workspace, and should be used with extreme
369
+ # caution.
370
+ #
371
+ # @example Basic Invocation
372
+ # RubyTerraform.import(
373
+ # directory: 'infra/networking',
374
+ # address: 'a.resource.address',
375
+ # id: 'a-resource-id',
376
+ # vars: {
377
+ # region: 'eu-central'
378
+ # })
379
+ #
380
+ def import(parameters = {})
381
+ exec(RubyTerraform::Commands::Import, parameters)
382
+ end
383
+
384
+ # Invokes the +terraform init+ command which initializes a new or existing
385
+ # Terraform working directory by creating initial files, loading any remote
386
+ # state, downloading modules, etc.
387
+ #
388
+ # This is the first command that should be run for any new or existing
389
+ # Terraform configuration per machine. This sets up all the local data
390
+ # necessary to run Terraform that is typically not committed to version
391
+ # control.
392
+ #
393
+ # This command is always safe to run multiple times. Though subsequent runs
394
+ # may give errors, this command will never delete your configuration or
395
+ # state. Even so, if you have important information, please back it up prior
396
+ # to running this command, just in case.
397
+ #
398
+ # @param parameters The parameters used to invoke the command
399
+ # @option parameters [String] :path The path to initialize; defaults to the
400
+ # current directory.
401
+ # @option parameters [String] :chdir The path of a working directory to
402
+ # switch to before executing the given subcommand.
403
+ # @option parameters [Boolean] :backend (true) Whether or not to configure
404
+ # the backend for this configuration.
405
+ # @option parameters [Hash<String,Object>] :backend_config A map of backend
406
+ # specific configuration parameters.
407
+ # @option parameters [Boolean] :force_copy (false) If +true+, suppresses
408
+ # prompts about copying state data; this is equivalent to providing a
409
+ # "yes" to all confirmation prompts.
410
+ # @option parameters [String] :from_module copies the contents of the given
411
+ # module into the target directory before initialization.
412
+ # @option parameters [Boolean] :get (true) Whether or not to download any
413
+ # modules for this configuration.
414
+ # @option parameters [Boolean] :get_plugins (true) Whether or not to install
415
+ # plugins for this configuration (deprecated, removed in terraform 0.15).
416
+ # @option parameters [Boolean] :input (true) When +false+, will not ask for
417
+ # input for variables not directly set.
418
+ # @option parameters [Boolean] :lock (true) When +true+, locks the state
419
+ # file when locking is supported; when +false+, does not lock the state
420
+ # file (deprecated, removed in terraform 0.15).
421
+ # @option parameters [String] :lock_timeout ("0s") The duration to retry a
422
+ # state lock (deprecated, removed in terraform 0.15).
423
+ # @option parameters [Boolean] :no_color (false) Whether or not the output
424
+ # from the command should be in color.
425
+ # @option parameters [String] :plugin_dir The path to a directory containing
426
+ # plugin binaries; this overrides all default search paths for plugins,
427
+ # and prevents the automatic installation of plugins.
428
+ # @option parameters [Boolean] :reconfigure (false) If +true+, reconfigures
429
+ # the backend, ignoring any saved configuration.
430
+ # @option parameters [Boolean] :upgrade (false) If +true+, when installing
431
+ # modules or plugins, ignores previously-downloaded objects and installs
432
+ # the latest version allowed within configured constraints.
433
+ # @option parameters [Boolean] :verify_plugins (true) Whether or not to
434
+ # verify plugins for this configuration (deprecated, removed in terraform
435
+ # 0.15).
436
+ #
437
+ # @example Basic Invocation
438
+ # RubyTerraform.init(
439
+ # from_module: 'some/module/path',
440
+ # path: 'infra/module')
441
+ #
442
+ def init(parameters = {})
443
+ exec(RubyTerraform::Commands::Init, parameters)
444
+ end
445
+
446
+ # Invokes the +terraform login+ command which retrieves an authentication
447
+ # token for the given hostname, if it supports automatic login, and saves it
448
+ # in a credentials file in your home directory.
449
+ #
450
+ # If no hostname is provided, the default hostname is app.terraform.io, to
451
+ # log in to Terraform Cloud.
452
+ #
453
+ # If not overridden by credentials helper settings in the CLI configuration,
454
+ # the credentials will be written to the following local file:
455
+ # ~/.terraform.d/credentials.tfrc.json
456
+ #
457
+ # @param parameters The parameters used to invoke the command
458
+ # @option parameters [String] :chdir The path of a working directory to
459
+ # switch to before executing the given subcommand.
460
+ #
461
+ # @example Basic Invocation
462
+ # RubyTerraform.login
463
+ #
464
+ def login(parameters = {})
465
+ exec(RubyTerraform::Commands::Login, parameters)
466
+ end
467
+
468
+ # Invokes the +terraform logout+ command which removes locally-stored
469
+ # credentials for specified hostname.
470
+ #
471
+ # Note: the API token is only removed from local storage, not destroyed on
472
+ # the remote server, so it will remain valid until manually revoked.
473
+ #
474
+ # If no hostname is provided, the default hostname is app.terraform.io.
475
+ #
476
+ # @param parameters The parameters used to invoke the command
477
+ # @option parameters [String] :chdir The path of a working directory to
478
+ # switch to before executing the given subcommand.
479
+ #
480
+ # @example Basic Invocation
481
+ # RubyTerraform.logout
482
+ #
483
+ def logout(parameters = {})
484
+ exec(RubyTerraform::Commands::Logout, parameters)
485
+ end
486
+
487
+ # Invokes the +terraform output+ command which reads an output variable from
488
+ # a Terraform state file and prints the value. With no additional arguments,
489
+ # output will display all the outputs for the root module. If +:name+ is not
490
+ # specified, all outputs are printed.
491
+ #
492
+ # @param parameters The parameters used to invoke the command
493
+ # @option parameters [String] :name The name of the output to read.
494
+ # @option parameters [String] :chdir The path of a working directory to
495
+ # switch to before executing the given subcommand.
496
+ # @option parameters [String] :state The path to the state file to read;
497
+ # defaults to +"terraform.tfstate"+.
498
+ # @option parameters [Boolean] :no_color (false) Whether or not the output
499
+ # from the command should be in color.
500
+ # @option parameters [Boolean] :json (false) If +true+, machine readable
501
+ # output will be printed in JSON format.
502
+ # @option parameters [Boolean] :raw (false) If +true+, for value types that
503
+ # can be automatically converted to a string, will print the raw string
504
+ # directly, rather than a human-oriented representation of the value.
505
+ #
506
+ # @example Basic Invocation
507
+ # RubyTerraform.output(
508
+ # name: 'vpc_id')
509
+ #
510
+ def output(parameters = {})
511
+ exec(RubyTerraform::Commands::Output, parameters)
512
+ end
513
+
514
+ # Invokes the +terraform plan+ command which generates a speculative
515
+ # execution plan, showing what actions Terraform would take to apply the
516
+ # current configuration. This command will not actually perform the planned
517
+ # actions.
518
+ #
519
+ # You can optionally save the plan to a file, which you can then pass to
520
+ # the {#apply} command to perform exactly the actions described in the plan.
521
+ #
522
+ # @param parameters The parameters used to invoke the command
523
+ # @option parameters [String] :plan The path to output the plan if it should
524
+ # be saved to a file.
525
+ # @option parameters [String] :chdir The path of a working directory to
526
+ # switch to before executing the given subcommand.
527
+ # @option parameters [Boolean] :compact_warnings (false) When +true+, if
528
+ # terraform produces any warnings that are not accompanied by errors,
529
+ # they are shown in a more compact form that includes only the summary
530
+ # messages.
531
+ # @option parameters [Boolean] :destroy (false) When +true+, a plan will be
532
+ # generated to destroy all resources managed by the given configuration
533
+ # and state.
534
+ # @option parameters [Boolean] :detailed_exitcode (false) Whether or not to
535
+ # return detailed exit codes when the command exits; this will change the
536
+ # meaning of exit codes to: 0 - Succeeded, diff is empty (no changes); 1 -
537
+ # Errored; 2 - Succeeded, there is a diff.
538
+ # @option parameters [Boolean] :input (true) When +false+, will not ask for
539
+ # input for variables not directly set.
540
+ # @option parameters [Boolean] :lock (true) When +true+, locks the state
541
+ # file when locking is supported; when +false+, does not lock the state
542
+ # file.
543
+ # @option parameters [String] :lock_timeout ("0s") The duration to retry a
544
+ # state lock.
545
+ # @option parameters [Boolean] :no_color (false) Whether or not the output
546
+ # from the command should be in color.
547
+ # @option parameters [Integer] :parallelism (10) The number of parallel
548
+ # resource operations.
549
+ # @option parameters [Boolean] :refresh (true) When +true+, updates state
550
+ # prior to checking for differences; when +false+ uses locally available
551
+ # state; this has no effect when +:plan+ is provided.
552
+ # @option parameters [String] :state ("terraform.tfstate") The path to the
553
+ # state file from which to read state and in which to store state (unless
554
+ # +:state_out+ is specified).
555
+ # @option parameters [String] :target The address of a resource to target;
556
+ # if both +:target+ and +:targets+ are provided, all targets will be
557
+ # passed to terraform.
558
+ # @option parameters [Array<String>] :targets An array of resource addresses
559
+ # to target; if both +:target+ and +:targets+ are provided, all targets
560
+ # will be passed to terraform.
561
+ # @option parameters [Hash<String, Object>] :vars A map of variables to be
562
+ # passed to the terraform configuration.
563
+ # @option parameters [String] :var_file The path to a terraform var file;
564
+ # if both +:var_file+ and +:var_files+ are provided, all var files will be
565
+ # passed to terraform.
566
+ # @option parameters [Array<String>] :var_files An array of paths to
567
+ # terraform var files; if both +:var_file+ and +:var_files+ are provided,
568
+ # all var files will be passed to terraform.
569
+ #
570
+ # @example Basic Invocation
571
+ # RubyTerraform.plan(
572
+ # directory: 'infra/networking',
573
+ # vars: {
574
+ # region: 'eu-central'
575
+ # })
576
+ #
577
+ def plan(parameters = {})
578
+ exec(RubyTerraform::Commands::Plan, parameters)
579
+ end
580
+
581
+ # Invokes the +terraform providers+ command which prints out a tree of
582
+ # modules in the referenced configuration annotated with their provider
583
+ # requirements.
584
+ #
585
+ # This provides an overview of all of the provider requirements across all
586
+ # referenced modules, as an aid to understanding why particular provider
587
+ # plugins are needed and why particular versions are selected.
588
+ #
589
+ # @param parameters The parameters used to invoke the command
590
+ # @option parameters [String] :chdir The path of a working directory to
591
+ # switch to before executing the given subcommand.
592
+ #
593
+ # @example Basic Invocation
594
+ # RubyTerraform.providers
595
+ #
596
+ def providers(parameters = {})
597
+ exec(RubyTerraform::Commands::Providers, parameters)
598
+ end
599
+
600
+ # Invokes the +terraform providers lock+ command which writes out dependency
601
+ # locks for the configured providers.
602
+ #
603
+ # Normally the dependency lock file (.terraform.lock.hcl) is updated
604
+ # automatically by "terraform init", but the information available to the
605
+ # normal provider installer can be constrained when you're installing
606
+ # providers from filesystem or network mirrors, and so the generated lock
607
+ # file can end up incomplete.
608
+ #
609
+ # The "providers lock" subcommand addresses that by updating the lock file
610
+ # based on the official packages available in the origin registry, ignoring
611
+ # the currently-configured installation strategy.
612
+ #
613
+ # After this command succeeds, the lock file will contain suitable checksums
614
+ # to allow installation of the providers needed by the current configuration
615
+ # on all of the selected platforms.
616
+ #
617
+ # By default this command updates the lock file for every provider declared
618
+ # in the configuration. You can override that behavior by providing one or
619
+ # more provider source addresses on the command line.
620
+ #
621
+ # @param parameters The parameters used to invoke the command
622
+ # @option parameters [String] :providers The provider source addresses for
623
+ # which the lock file should be updated.
624
+ # @option parameters [String] :chdir The path of a working directory to
625
+ # switch to before executing the given subcommand.
626
+ # @option parameters [String] :fs_mirror If provided, consults the given
627
+ # filesystem mirror directory instead of the origin registry for each of
628
+ # the given providers; this would be necessary to generate lock file
629
+ # entries for a provider that is available only via a mirror, and not
630
+ # published in an upstream registry; in this case, the set of valid
631
+ # checksums will be limited only to what Terraform can learn from the data
632
+ # in the mirror directory.
633
+ # @option parameters [String] :net_mirror If provided, consults the given
634
+ # network mirror (given as a base URL) instead of the origin registry for
635
+ # each of the given providers; this would be necessary to generate lock
636
+ # file entries for a provider that is available only via a mirror, and not
637
+ # published in an upstream registry; in this case, the set of valid
638
+ # checksums will be limited only to what Terraform can learn from the data
639
+ # in the mirror indices.
640
+ # @option parameters [String] :platform The target platform to request
641
+ # package checksums for; by default Terraform will request package
642
+ # checksums suitable only for the platform where you run this command;
643
+ # target names consist of an operating system and a CPU architecture; for
644
+ # example, "linux_amd64" selects the Linux operating system running on an
645
+ # AMD64 or x86_64 CPU; each provider is available only for a limited set
646
+ # of target platforms; if both +:platform+ and +:platforms+ are provided,
647
+ # all platforms will be passed to Terraform.
648
+ # @option parameters [Array<String>] :platforms An array of target platforms
649
+ # to request package checksums for; see +:platform+ for more details; if
650
+ # both +:platform+ and +:platforms+ are provided, all platforms will be
651
+ # passed to Terraform.
652
+ #
653
+ # @example Basic Invocation
654
+ # RubyTerraform.providers_lock(
655
+ # fs_mirror: "/usr/local/terraform/providers",
656
+ # platforms: ["windows_amd64", "darwin_amd64", "linux_amd64"],
657
+ # providers: "tf.example.com/ourcompany/ourplatform")
658
+ #
659
+ def providers_lock(parameters = {})
660
+ exec(RubyTerraform::Commands::ProvidersLock, parameters)
661
+ end
662
+
663
+ # Invokes the +terraform providers mirror+ command which saves local copies
664
+ # of all required provider plugins.
665
+ #
666
+ # Populates a local directory with copies of the provider plugins needed for
667
+ # the current configuration, so that the directory can be used either
668
+ # directly as a filesystem mirror or as the basis for a network mirror and
669
+ # thus obtain those providers without access to their origin registries in
670
+ # future.
671
+ #
672
+ # The mirror directory will contain JSON index files that can be published
673
+ # along with the mirrored packages on a static HTTP file server to produce a
674
+ # network mirror. Those index files will be ignored if the directory is used
675
+ # instead as a local filesystem mirror.
676
+ #
677
+ # @param parameters The parameters used to invoke the command
678
+ # @option parameters [String] :directory The directory to populate with the
679
+ # mirrored provider plugins.
680
+ # @option parameters [String] :chdir The path of a working directory to
681
+ # switch to before executing the given subcommand.
682
+ # @option parameters [String] :platform The target platform to build a
683
+ # mirror for; by default Terraform will obtain plugin packages suitable
684
+ # for the platform where you run this command; target names consist of an
685
+ # operating system and a CPU architecture; for example, "linux_amd64"
686
+ # selects the Linux operating system running on an AMD64 or x86_64 CPU;
687
+ # each provider is available only for a limited set of target platforms;
688
+ # if both +:platform+ and +:platforms+ are provided, all platforms will be
689
+ # passed to Terraform.
690
+ # @option parameters [Array<String>] :platforms An array of target platforms
691
+ # to build a mirror for for; see +:platform+ for more details; if both
692
+ # +:platform+ and +:platforms+ are provided, all platforms will be passed
693
+ # to Terraform.
694
+ #
695
+ # @example Basic Invocation
696
+ # RubyTerraform.platforms_mirror(
697
+ # directory: './plugins',
698
+ # platforms: ["windows_amd64", "darwin_amd64", "linux_amd64"])
699
+ #
700
+ def providers_mirror(parameters = {})
701
+ exec(RubyTerraform::Commands::ProvidersMirror, parameters)
702
+ end
703
+
100
704
  {
101
705
  clean: RubyTerraform::Commands::Clean,
102
- destroy: RubyTerraform::Commands::Destroy,
103
- format: RubyTerraform::Commands::Format,
104
- force_unlock: RubyTerraform::Commands::ForceUnlock,
105
- get: RubyTerraform::Commands::Get,
106
- graph: RubyTerraform::Commands::Graph,
107
- import: RubyTerraform::Commands::Import,
108
- init: RubyTerraform::Commands::Init,
109
- login: RubyTerraform::Commands::Login,
110
- logout: RubyTerraform::Commands::Logout,
111
- output: RubyTerraform::Commands::Output,
112
- plan: RubyTerraform::Commands::Plan,
113
- providers: RubyTerraform::Commands::Providers,
114
- providers_lock: RubyTerraform::Commands::ProvidersLock,
115
- providers_mirror: RubyTerraform::Commands::ProvidersMirror,
116
706
  providers_schema: RubyTerraform::Commands::ProvidersSchema,
117
707
  refresh: RubyTerraform::Commands::Refresh,
118
708
  remote_config: RubyTerraform::Commands::RemoteConfig,