ruby-terraform 0.54.0 → 0.58.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +6 -6
- data/README.md +42 -0
- data/lib/ruby_terraform.rb +2 -7
- data/lib/ruby_terraform/commands.rb +1 -0
- data/lib/ruby_terraform/commands/import.rb +46 -0
- data/lib/ruby_terraform/output.rb +21 -0
- data/lib/ruby_terraform/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a169d8302479fd0aa777ea6f3a7f2fe5243e49fd54a1d45548be4fae4937c1cb
|
4
|
+
data.tar.gz: ee71f858ae3783e6d0bf83f1e7ae3a5083d083ca885cc5465ac065dd7a1a84e7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fdbcf07a395455bf0d6ffad1811fe836b5921183426fa65818a7939ffcb605691c949eadc66d47f6899b0bd6475d2a8c6dc03649da667cbd2b1b294e85374f3d
|
7
|
+
data.tar.gz: b853e31c72eb7bb358d203b98d68087de8b752ee24d1b78d474136a4aae71e64cc335275f1a8867d3deab7fcf58f78e8a5f904c1382447b8840696d6665366f4
|
data/Gemfile.lock
CHANGED
@@ -1,18 +1,18 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
ruby-terraform (0.
|
4
|
+
ruby-terraform (0.58.0)
|
5
5
|
lino (>= 1.1, < 2)
|
6
6
|
|
7
7
|
GEM
|
8
8
|
remote: https://rubygems.org/
|
9
9
|
specs:
|
10
|
-
activesupport (6.0.
|
10
|
+
activesupport (6.0.3.1)
|
11
11
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
12
12
|
i18n (>= 0.7, < 2)
|
13
13
|
minitest (~> 5.1)
|
14
14
|
tzinfo (~> 1.1)
|
15
|
-
zeitwerk (~> 2.2)
|
15
|
+
zeitwerk (~> 2.2, >= 2.2.2)
|
16
16
|
addressable (2.7.0)
|
17
17
|
public_suffix (>= 2.0.2, < 5.0)
|
18
18
|
colored2 (3.1.2)
|
@@ -29,13 +29,13 @@ GEM
|
|
29
29
|
lino (1.3.0)
|
30
30
|
hamster (~> 3.0)
|
31
31
|
open4 (~> 1.3)
|
32
|
-
minitest (5.14.
|
32
|
+
minitest (5.14.1)
|
33
33
|
multipart-post (2.1.1)
|
34
34
|
octokit (4.18.0)
|
35
35
|
faraday (>= 0.9)
|
36
36
|
sawyer (~> 0.8.0, >= 0.5.3)
|
37
37
|
open4 (1.3.4)
|
38
|
-
public_suffix (4.0.
|
38
|
+
public_suffix (4.0.5)
|
39
39
|
rake (13.0.1)
|
40
40
|
rake_circle_ci (0.7.0)
|
41
41
|
colored2 (~> 3.1)
|
@@ -60,7 +60,7 @@ GEM
|
|
60
60
|
rspec-mocks (~> 3.9.0)
|
61
61
|
rspec-core (3.9.2)
|
62
62
|
rspec-support (~> 3.9.3)
|
63
|
-
rspec-expectations (3.9.
|
63
|
+
rspec-expectations (3.9.2)
|
64
64
|
diff-lcs (>= 1.2.0, < 2.0)
|
65
65
|
rspec-support (~> 3.9.0)
|
66
66
|
rspec-mocks (3.9.1)
|
data/README.md
CHANGED
@@ -48,6 +48,7 @@ Currently, there is partial support for the following commands:
|
|
48
48
|
* `RubyTerraform::Commands::Destroy`: executes `terraform destroy`
|
49
49
|
* `RubyTerraform::Commands::Output`: executes `terraform output`
|
50
50
|
* `RubyTerraform::Commands::Refresh`: executes `terraform refresh`
|
51
|
+
* `RubyTerraform::Commands::Import`: executes `terraform import`
|
51
52
|
* `RubyTerraform::Commands::RemoteConfig`: executes `terraform remote config`
|
52
53
|
* `RubyTerraform::Commands::Validate`: executes `terraform validate`
|
53
54
|
* `RubyTerraform::Commands::Workspace`: executes `terraform workspace`
|
@@ -311,6 +312,47 @@ The refresh command supports the following options passed as keyword arguments:
|
|
311
312
|
defaults to `false`.
|
312
313
|
|
313
314
|
|
315
|
+
### RubyTerraform::Commands::Import
|
316
|
+
|
317
|
+
The import command imports existing infrastructure into your terraform state.
|
318
|
+
It can be called in the following ways:
|
319
|
+
|
320
|
+
```ruby
|
321
|
+
RubyTerraform.import(
|
322
|
+
directory: 'infra/networking',
|
323
|
+
address: 'a.resource.address',
|
324
|
+
id: 'a-resource-id',
|
325
|
+
vars: {
|
326
|
+
region: 'eu-central'
|
327
|
+
}))
|
328
|
+
RubyTerraform::Commands::Import.new.execute(
|
329
|
+
directory: 'infra/networking',
|
330
|
+
address: 'a.resource.address',
|
331
|
+
id: 'a-resource-id',
|
332
|
+
vars: {
|
333
|
+
region: 'eu-central'
|
334
|
+
}))
|
335
|
+
```
|
336
|
+
|
337
|
+
The import command supports the following options passed as keyword arguments:
|
338
|
+
* `directory`: the directory containing terraform configuration; required.
|
339
|
+
* `address`: a valid resource address; required.
|
340
|
+
* `id`: id of resource being imported; required.
|
341
|
+
* `vars`: a map of vars to be passed in to the terraform configuration.
|
342
|
+
* `var_file`: the path to a terraform var file; if both `var_file` and
|
343
|
+
`var_files` are provided, all var files will be passed to terraform.
|
344
|
+
* `var_files`: an array of paths to terraform var files; if both `var_file` and
|
345
|
+
`var_files` are provided, all var files will be passed to terraform.
|
346
|
+
* `input`: when `false`, will not ask for input for variables not directly set;
|
347
|
+
defaults to `true`.
|
348
|
+
* `state`: the path to the state file containing the current state; defaults to
|
349
|
+
terraform.tfstate in the working directory or the remote state if configured.
|
350
|
+
* `no_backup`: when `true`, no backup file will be written; defaults to `false`.
|
351
|
+
* `backup`: the path to the backup file in which to store the state backup.
|
352
|
+
* `no_color`: whether or not the output from the command should be in color;
|
353
|
+
defaults to `false`.
|
354
|
+
|
355
|
+
|
314
356
|
### RubyTerraform::Commands::RemoteConfig
|
315
357
|
|
316
358
|
The remote config command configures storage of state using a remote backend. It
|
data/lib/ruby_terraform.rb
CHANGED
@@ -69,13 +69,8 @@ module RubyTerraform
|
|
69
69
|
Commands::Workspace.new.execute(opts)
|
70
70
|
end
|
71
71
|
|
72
|
-
def
|
73
|
-
|
74
|
-
remote_opts = opts[:remote]
|
75
|
-
|
76
|
-
clean
|
77
|
-
remote_config(remote_opts)
|
78
|
-
output(name: output_name)
|
72
|
+
def import(opts = {})
|
73
|
+
Commands::Import.new.execute(opts)
|
79
74
|
end
|
80
75
|
end
|
81
76
|
extend ClassMethods
|
@@ -0,0 +1,46 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'lino'
|
4
|
+
require_relative 'base'
|
5
|
+
|
6
|
+
module RubyTerraform
|
7
|
+
module Commands
|
8
|
+
class Import < Base
|
9
|
+
def configure_command(builder, opts)
|
10
|
+
directory = opts[:directory]
|
11
|
+
vars = opts[:vars] || {}
|
12
|
+
var_file = opts[:var_file]
|
13
|
+
var_files = opts[:var_files] || []
|
14
|
+
no_color = opts[:no_color]
|
15
|
+
no_backup = opts[:no_backup]
|
16
|
+
backup = no_backup ? '-' : opts[:backup]
|
17
|
+
state = opts[:state]
|
18
|
+
input = opts[:input]
|
19
|
+
address = opts[:address]
|
20
|
+
id = opts[:id]
|
21
|
+
|
22
|
+
builder
|
23
|
+
.with_subcommand('import') do |sub|
|
24
|
+
sub = sub.with_option('-config', directory)
|
25
|
+
vars.each do |key, value|
|
26
|
+
var_value = value.is_a?(String) ? value : JSON.generate(value)
|
27
|
+
sub = sub.with_option(
|
28
|
+
'-var', "'#{key}=#{var_value}'", separator: ' '
|
29
|
+
)
|
30
|
+
end
|
31
|
+
sub = sub.with_option('-var-file', var_file) if var_file
|
32
|
+
var_files.each do |file|
|
33
|
+
sub = sub.with_option('-var-file', file)
|
34
|
+
end
|
35
|
+
sub = sub.with_option('-state', state) if state
|
36
|
+
sub = sub.with_option('-input', input) if input
|
37
|
+
sub = sub.with_option('-backup', backup) if backup
|
38
|
+
sub = sub.with_flag('-no-color') if no_color
|
39
|
+
sub
|
40
|
+
end
|
41
|
+
.with_argument(address)
|
42
|
+
.with_argument(id)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module RubyTerraform
|
2
|
+
class Output
|
3
|
+
def self.for(opts)
|
4
|
+
name = opts[:name]
|
5
|
+
backend_config = opts[:backend_config]
|
6
|
+
|
7
|
+
source_directory = opts[:source_directory]
|
8
|
+
work_directory = opts[:work_directory]
|
9
|
+
|
10
|
+
configuration_directory = File.join(work_directory, source_directory)
|
11
|
+
|
12
|
+
FileUtils.mkdir_p File.dirname(configuration_directory)
|
13
|
+
FileUtils.cp_r source_directory, configuration_directory
|
14
|
+
|
15
|
+
Dir.chdir(configuration_directory) do
|
16
|
+
RubyTerraform.init(backend_config: backend_config)
|
17
|
+
RubyTerraform.output(name: name)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-terraform
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.58.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Toby Clemson
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-07-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: lino
|
@@ -173,6 +173,7 @@ files:
|
|
173
173
|
- lib/ruby_terraform/commands/clean.rb
|
174
174
|
- lib/ruby_terraform/commands/destroy.rb
|
175
175
|
- lib/ruby_terraform/commands/get.rb
|
176
|
+
- lib/ruby_terraform/commands/import.rb
|
176
177
|
- lib/ruby_terraform/commands/init.rb
|
177
178
|
- lib/ruby_terraform/commands/output.rb
|
178
179
|
- lib/ruby_terraform/commands/plan.rb
|
@@ -183,6 +184,7 @@ files:
|
|
183
184
|
- lib/ruby_terraform/commands/workspace.rb
|
184
185
|
- lib/ruby_terraform/errors.rb
|
185
186
|
- lib/ruby_terraform/errors/execution_error.rb
|
187
|
+
- lib/ruby_terraform/output.rb
|
186
188
|
- lib/ruby_terraform/version.rb
|
187
189
|
- ruby_terraform.gemspec
|
188
190
|
- scripts/ci/common/configure-git.sh
|