ruby-terraform 0.65.0.pre.10 → 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 +4 -4
- data/Gemfile.lock +18 -10
- data/README.md +2 -19
- data/lib/ruby_terraform.rb +691 -18
- data/lib/ruby_terraform/commands/apply.rb +75 -1
- data/lib/ruby_terraform/commands/base.rb +18 -15
- data/lib/ruby_terraform/commands/destroy.rb +67 -1
- data/lib/ruby_terraform/commands/force_unlock.rb +28 -0
- data/lib/ruby_terraform/commands/format.rb +39 -0
- data/lib/ruby_terraform/commands/get.rb +31 -0
- data/lib/ruby_terraform/commands/graph.rb +38 -0
- data/lib/ruby_terraform/commands/import.rb +95 -1
- data/lib/ruby_terraform/commands/init.rb +72 -1
- data/lib/ruby_terraform/commands/login.rb +24 -0
- data/lib/ruby_terraform/commands/logout.rb +21 -0
- data/lib/ruby_terraform/commands/output.rb +34 -4
- data/lib/ruby_terraform/commands/plan.rb +67 -1
- data/lib/ruby_terraform/commands/providers.rb +22 -0
- data/lib/ruby_terraform/commands/providers_lock.rb +66 -0
- data/lib/ruby_terraform/commands/providers_mirror.rb +42 -0
- data/lib/ruby_terraform/commands/taint.rb +2 -1
- data/lib/ruby_terraform/options.rb +25 -3
- data/lib/ruby_terraform/options/common.rb +1 -0
- data/lib/ruby_terraform/options/definition.rb +172 -0
- data/lib/ruby_terraform/options/definitions.rb +103 -0
- data/lib/ruby_terraform/options/factory.rb +10 -102
- data/lib/ruby_terraform/options/name.rb +11 -19
- data/lib/ruby_terraform/options/types.rb +27 -0
- data/lib/ruby_terraform/options/types/base.rb +6 -13
- data/lib/ruby_terraform/options/types/flag.rb +1 -3
- data/lib/ruby_terraform/options/types/standard.rb +1 -27
- data/lib/ruby_terraform/options/values.rb +38 -0
- data/lib/ruby_terraform/options/values/base.rb +15 -0
- data/lib/ruby_terraform/options/values/boolean.rb +13 -11
- data/lib/ruby_terraform/options/values/complex.rb +19 -0
- data/lib/ruby_terraform/options/values/key_value.rb +21 -0
- data/lib/ruby_terraform/options/values/string.rb +17 -0
- data/lib/ruby_terraform/version.rb +1 -1
- data/ruby_terraform.gemspec +3 -1
- metadata +40 -5
- data/lib/ruby_terraform/options/types/boolean.rb +0 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 856fa5b4cbf4a93f6a7e9d0c7abab4a25c56e362c33f1182762d9fe70f3c8520
|
4
|
+
data.tar.gz: 695688910f5e277ae91649169e1e9bbfe4ef6fe2fbc4a4c1f3b4f3b4559701b5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1aa00badf71f9f0db717c7a06a4806e7225b6b6005f61601043af3975ebbacb6e82826d24f792a3b602365178711f3a0b4a010b642dbb5c3be300e0f8955a202
|
7
|
+
data.tar.gz: faf27462271fc0c7a04b38e0221590c33e2fb25679816317509744c3ddfd6024200587cb0c92cc3eeb7e12290a48bb105c05ddc16e3deb30144cd033889bda6e
|
data/Gemfile.lock
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
ruby-terraform (0.65.0.pre.
|
5
|
-
|
4
|
+
ruby-terraform (0.65.0.pre.15)
|
5
|
+
immutable-struct (>= 2.4)
|
6
|
+
lino (>= 2.5)
|
6
7
|
|
7
8
|
GEM
|
8
9
|
remote: https://rubygems.org/
|
@@ -21,14 +22,18 @@ GEM
|
|
21
22
|
concurrent-ruby (1.1.8)
|
22
23
|
diff-lcs (1.4.4)
|
23
24
|
docile (1.3.5)
|
24
|
-
excon (0.
|
25
|
+
excon (0.80.1)
|
25
26
|
faker (2.17.0)
|
26
27
|
i18n (>= 1.6, < 2)
|
27
|
-
faraday (1.
|
28
|
+
faraday (1.4.1)
|
29
|
+
faraday-excon (~> 1.1)
|
28
30
|
faraday-net_http (~> 1.0)
|
31
|
+
faraday-net_http_persistent (~> 1.1)
|
29
32
|
multipart-post (>= 1.2, < 3)
|
30
|
-
ruby2_keywords
|
33
|
+
ruby2_keywords (>= 0.0.4)
|
34
|
+
faraday-excon (1.1.0)
|
31
35
|
faraday-net_http (1.0.1)
|
36
|
+
faraday-net_http_persistent (1.1.0)
|
32
37
|
ffi (1.15.0)
|
33
38
|
formatador (0.2.5)
|
34
39
|
gem-release (2.2.1)
|
@@ -50,7 +55,8 @@ GEM
|
|
50
55
|
concurrent-ruby (~> 1.0)
|
51
56
|
i18n (1.8.10)
|
52
57
|
concurrent-ruby (~> 1.0)
|
53
|
-
|
58
|
+
immutable-struct (2.4.1)
|
59
|
+
lino (2.5.0)
|
54
60
|
hamster (~> 3.0)
|
55
61
|
open4 (~> 1.3)
|
56
62
|
listen (3.5.1)
|
@@ -69,9 +75,9 @@ GEM
|
|
69
75
|
sawyer (~> 0.8.0, >= 0.5.3)
|
70
76
|
open4 (1.3.4)
|
71
77
|
parallel (1.20.1)
|
72
|
-
parser (3.0.
|
78
|
+
parser (3.0.1.0)
|
73
79
|
ast (~> 2.4.1)
|
74
|
-
pry (0.14.
|
80
|
+
pry (0.14.1)
|
75
81
|
coderay (~> 1.1)
|
76
82
|
method_source (~> 1.0)
|
77
83
|
public_suffix (4.0.6)
|
@@ -115,7 +121,7 @@ GEM
|
|
115
121
|
diff-lcs (>= 1.2.0, < 2.0)
|
116
122
|
rspec-support (~> 3.10.0)
|
117
123
|
rspec-support (3.10.2)
|
118
|
-
rubocop (1.
|
124
|
+
rubocop (1.13.0)
|
119
125
|
parallel (~> 1.10)
|
120
126
|
parser (>= 3.0.0.0)
|
121
127
|
rainbow (>= 2.2.2, < 4.0)
|
@@ -150,6 +156,7 @@ GEM
|
|
150
156
|
tzinfo (2.0.4)
|
151
157
|
concurrent-ruby (~> 1.0)
|
152
158
|
unicode-display_width (2.0.0)
|
159
|
+
yard (0.9.26)
|
153
160
|
zeitwerk (2.4.2)
|
154
161
|
|
155
162
|
PLATFORMS
|
@@ -172,6 +179,7 @@ DEPENDENCIES
|
|
172
179
|
rubocop-rspec (~> 2.2)
|
173
180
|
ruby-terraform!
|
174
181
|
simplecov (~> 0.21)
|
182
|
+
yard (~> 0.9)
|
175
183
|
|
176
184
|
BUNDLED WITH
|
177
|
-
2.2.
|
185
|
+
2.2.16
|
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:
|
data/lib/ruby_terraform.rb
CHANGED
@@ -24,23 +24,685 @@ module RubyTerraform
|
|
24
24
|
end
|
25
25
|
|
26
26
|
module ClassMethods
|
27
|
+
# Invokes the +terraform apply+ command which creates or updates
|
28
|
+
# infrastructure according to terraform configuration files in the provided
|
29
|
+
# directory.
|
30
|
+
#
|
31
|
+
# By default, terraform will generate a new plan and present it for approval
|
32
|
+
# before taking any action. Alternatively, the command accepts a plan file
|
33
|
+
# created by a previous invocation, in which case terraform will take the
|
34
|
+
# actions described in that plan without any confirmation prompt.
|
35
|
+
#
|
36
|
+
# @param parameters The parameters used to invoke the command
|
37
|
+
# @option parameters [String] :directory The directory containing terraform
|
38
|
+
# configuration; required unless +:plan+ is provided.
|
39
|
+
# @option parameters [String] :plan The path to a pre-computed plan to be
|
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.
|
43
|
+
# @option parameters [Boolean] :auto_approve (false) If +true+, skips
|
44
|
+
# interactive approval of the generated plan before applying.
|
45
|
+
# @option parameters [String] :backup The path to backup the existing state
|
46
|
+
# file before modifying; defaults to the +:state_out+ path with
|
47
|
+
# +".backup"+ extension; set +:no_backup+ to +true+ to skip backups
|
48
|
+
# entirely.
|
49
|
+
# @option parameters [Boolean] :compact_warnings (false) When +true+, if
|
50
|
+
# terraform produces any warnings that are not accompanied by errors,
|
51
|
+
# they are shown in a more compact form that includes only the summary
|
52
|
+
# messages.
|
53
|
+
# @option parameters [Boolean] :input (true) When +false+, will not ask for
|
54
|
+
# input for variables not directly set.
|
55
|
+
# @option parameters [Boolean] :lock (true) When +true+, locks the state
|
56
|
+
# file when locking is supported; when +false+, does not lock the state
|
57
|
+
# file.
|
58
|
+
# @option parameters [String] :lock_timeout ("0s") The duration to retry a
|
59
|
+
# state lock.
|
60
|
+
# @option parameters [Boolean] :no_backup (false) When +true+, no backup
|
61
|
+
# file will be written.
|
62
|
+
# @option parameters [Boolean] :no_color (false) Whether or not the output
|
63
|
+
# from the command should be in color.
|
64
|
+
# @option parameters [Integer] :parallelism (10) The number of parallel
|
65
|
+
# resource operations.
|
66
|
+
# @option parameters [Boolean] :refresh (true) When +true+, updates state
|
67
|
+
# prior to checking for differences; when +false+ uses locally available
|
68
|
+
# state; this has no effect when +:plan+ is provided.
|
69
|
+
# @option parameters [String] :state ("terraform.tfstate") The path to the
|
70
|
+
# state file from which to read state and in which to store state (unless
|
71
|
+
# +:state_out+ is specified).
|
72
|
+
# @option parameters [String] :state_out The path to write state to that is
|
73
|
+
# different than +:state+; this can be used to preserve the old state.
|
74
|
+
# @option parameters [String] :target The address of a resource to target;
|
75
|
+
# if both +:target+ and +:targets+ are provided, all targets will be
|
76
|
+
# passed to terraform.
|
77
|
+
# @option parameters [Array<String>] :targets An array of resource addresses
|
78
|
+
# to target; if both +:target+ and +:targets+ are provided, all targets
|
79
|
+
# will be passed to terraform.
|
80
|
+
# @option parameters [Hash<String, Object>] :vars A map of variables to be
|
81
|
+
# passed to the terraform configuration.
|
82
|
+
# @option parameters [String] :var_file The path to a terraform var file;
|
83
|
+
# if both +:var_file+ and +:var_files+ are provided, all var files will be
|
84
|
+
# passed to terraform.
|
85
|
+
# @option parameters [Array<String>] :var_files An array of paths to
|
86
|
+
# terraform var files; if both +:var_file+ and +:var_files+ are provided,
|
87
|
+
# all var files will be passed to terraform.
|
88
|
+
#
|
89
|
+
# @example Basic Invocation
|
90
|
+
# RubyTerraform.apply(
|
91
|
+
# directory: 'infra/networking',
|
92
|
+
# vars: {
|
93
|
+
# region: 'eu-central'
|
94
|
+
# })
|
95
|
+
#
|
96
|
+
def apply(parameters = {})
|
97
|
+
exec(RubyTerraform::Commands::Apply, parameters)
|
98
|
+
end
|
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
|
+
|
27
704
|
{
|
28
|
-
apply: RubyTerraform::Commands::Apply,
|
29
705
|
clean: RubyTerraform::Commands::Clean,
|
30
|
-
destroy: RubyTerraform::Commands::Destroy,
|
31
|
-
format: RubyTerraform::Commands::Format,
|
32
|
-
force_unlock: RubyTerraform::Commands::ForceUnlock,
|
33
|
-
get: RubyTerraform::Commands::Get,
|
34
|
-
graph: RubyTerraform::Commands::Graph,
|
35
|
-
import: RubyTerraform::Commands::Import,
|
36
|
-
init: RubyTerraform::Commands::Init,
|
37
|
-
login: RubyTerraform::Commands::Login,
|
38
|
-
logout: RubyTerraform::Commands::Logout,
|
39
|
-
output: RubyTerraform::Commands::Output,
|
40
|
-
plan: RubyTerraform::Commands::Plan,
|
41
|
-
providers: RubyTerraform::Commands::Providers,
|
42
|
-
providers_lock: RubyTerraform::Commands::ProvidersLock,
|
43
|
-
providers_mirror: RubyTerraform::Commands::ProvidersMirror,
|
44
706
|
providers_schema: RubyTerraform::Commands::ProvidersSchema,
|
45
707
|
refresh: RubyTerraform::Commands::Refresh,
|
46
708
|
remote_config: RubyTerraform::Commands::RemoteConfig,
|
@@ -62,7 +724,7 @@ module RubyTerraform
|
|
62
724
|
workspace_show: RubyTerraform::Commands::WorkspaceShow
|
63
725
|
}.each do |method, command_class|
|
64
726
|
define_method(method) do |parameters = {}|
|
65
|
-
command_class
|
727
|
+
exec(command_class, parameters)
|
66
728
|
end
|
67
729
|
end
|
68
730
|
|
@@ -79,7 +741,9 @@ module RubyTerraform
|
|
79
741
|
when 'show'
|
80
742
|
exec(RubyTerraform::Commands::WorkspaceShow, parameters)
|
81
743
|
else
|
82
|
-
raise
|
744
|
+
raise(
|
745
|
+
"Invalid operation '#{parameters[:operation]}' supplied to workspace"
|
746
|
+
)
|
83
747
|
end
|
84
748
|
end
|
85
749
|
|
@@ -96,7 +760,7 @@ module RubyTerraform
|
|
96
760
|
end
|
97
761
|
|
98
762
|
class Configuration
|
99
|
-
attr_accessor :binary, :logger, :stdin, :stdout, :stderr
|
763
|
+
attr_accessor :binary, :logger, :options, :stdin, :stdout, :stderr
|
100
764
|
|
101
765
|
def default_logger
|
102
766
|
logger = Logger.new($stdout)
|
@@ -104,9 +768,14 @@ module RubyTerraform
|
|
104
768
|
logger
|
105
769
|
end
|
106
770
|
|
771
|
+
def default_options
|
772
|
+
Options::Factory.new(Options::DEFINITIONS)
|
773
|
+
end
|
774
|
+
|
107
775
|
def initialize
|
108
776
|
@binary = 'terraform'
|
109
777
|
@logger = default_logger
|
778
|
+
@options = default_options
|
110
779
|
@stdin = ''
|
111
780
|
@stdout = $stdout
|
112
781
|
@stderr = $stderr
|
@@ -125,5 +794,9 @@ module RubyTerraform
|
|
125
794
|
def close
|
126
795
|
@targets.each(&:close)
|
127
796
|
end
|
797
|
+
|
798
|
+
def reopen(*args)
|
799
|
+
@targets.each { |t| t.reopen(*args) }
|
800
|
+
end
|
128
801
|
end
|
129
802
|
end
|