terraform-wrapper 1.3.0 → 1.3.1
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 +1 -1
- data/Rakefile +2 -2
- data/lib/terraform-wrapper/shared/backends/azure.rb +46 -54
- data/lib/terraform-wrapper/version.rb +3 -5
- data/lib/terraform-wrapper.rb +35 -30
- data/terraform-wrapper.gemspec +16 -14
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '08f80aabab7ef1a6dbd14f0192ae4b9fabd8f4c648c79fb1d2af43b5dc566521'
|
4
|
+
data.tar.gz: 65b6fc7b2177c5ff46ea6f3c54cc01b871ec57af40667ca066f5c91ee3302002
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d1facab7fdf808e52d099735f2d9411ed7c4b653ca89dbf7e394650ea805eac32f4eb90c14df67cf777d62fc77032e745d83a7aaa8924b205342365d402f711c
|
7
|
+
data.tar.gz: 5b54afa80939578ba88a577ac8b9abfa2c04973e51b8c4f9c11ba6248b2ddb63ef559f057764d357d21a1c19456afdfa8fb83288e67e024f056ac394c47c4c45
|
data/Gemfile
CHANGED
data/Rakefile
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
###############################################################################
|
6
6
|
|
7
|
-
require
|
7
|
+
require 'bundler/gem_tasks'
|
8
8
|
|
9
9
|
###############################################################################
|
10
10
|
|
@@ -13,7 +13,7 @@ task default: %i[]
|
|
13
13
|
###############################################################################
|
14
14
|
|
15
15
|
begin
|
16
|
-
require
|
16
|
+
require 'rspec/core/rake_task'
|
17
17
|
RSpec::Core::RakeTask.new(:spec)
|
18
18
|
rescue LoadError
|
19
19
|
end
|
@@ -1,82 +1,78 @@
|
|
1
1
|
###############################################################################
|
2
2
|
|
3
3
|
module TerraformWrapper
|
4
|
-
|
5
|
-
###############################################################################
|
4
|
+
###############################################################################
|
6
5
|
|
7
6
|
module Shared
|
8
|
-
|
9
|
-
###############################################################################
|
7
|
+
###############################################################################
|
10
8
|
|
11
9
|
module Backends
|
12
|
-
|
13
|
-
###############################################################################
|
10
|
+
###############################################################################
|
14
11
|
|
15
12
|
class Azure < Common
|
16
|
-
|
17
|
-
###############################################################################
|
13
|
+
###############################################################################
|
18
14
|
|
19
15
|
include TerraformWrapper::Shared::Logging
|
20
16
|
|
21
|
-
###############################################################################
|
17
|
+
###############################################################################
|
22
18
|
|
23
|
-
@@type =
|
19
|
+
@@type = 'azure'
|
24
20
|
|
25
|
-
###############################################################################
|
21
|
+
###############################################################################
|
26
22
|
|
27
|
-
attr_reader :account
|
28
|
-
attr_reader :container
|
29
|
-
attr_reader :group
|
30
|
-
attr_reader :key
|
23
|
+
attr_reader :account, :container, :group, :key
|
31
24
|
|
32
|
-
###############################################################################
|
25
|
+
###############################################################################
|
33
26
|
|
34
27
|
def initialize(options:, variables:)
|
35
28
|
construct(options: options, variables: variables)
|
36
29
|
end
|
37
30
|
|
38
|
-
###############################################################################
|
31
|
+
###############################################################################
|
39
32
|
|
40
|
-
def hash
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
33
|
+
def hash
|
34
|
+
{
|
35
|
+
'container_name' => @container,
|
36
|
+
'key' => @key,
|
37
|
+
'resource_group_name' => @group,
|
38
|
+
'storage_account_name' => @account
|
46
39
|
}
|
47
40
|
end
|
48
41
|
|
49
|
-
###############################################################################
|
42
|
+
###############################################################################
|
50
43
|
|
51
44
|
private
|
52
45
|
|
53
|
-
###############################################################################
|
46
|
+
###############################################################################
|
54
47
|
|
55
|
-
def specific
|
56
|
-
logger.fatal("Azure backend mandatory option 'group' has not been set!") unless @options.key?(
|
48
|
+
def specific
|
49
|
+
logger.fatal("Azure backend mandatory option 'group' has not been set!") unless @options.key?('group')
|
57
50
|
|
58
|
-
group = @options[
|
51
|
+
group = @options['group']
|
59
52
|
|
60
|
-
logger.fatal(
|
61
|
-
logger.fatal(
|
53
|
+
logger.fatal('Azure backend group must be a string!') unless group.is_a?(String)
|
54
|
+
logger.fatal('Azure backend group must not be blank!') if group.strip.empty?
|
62
55
|
|
63
|
-
account = @options.key?(
|
56
|
+
account = @options.key?('account') ? @options['account'] : group + 'tf'
|
64
57
|
|
65
|
-
logger.fatal(
|
66
|
-
logger.fatal(
|
58
|
+
logger.fatal('Azure backend storage account must be a string!') unless account.is_a?(String)
|
59
|
+
logger.fatal('Azure backend storage account must not be blank!') if account.strip.empty?
|
67
60
|
|
68
|
-
container = @options.key?(
|
61
|
+
container = @options.key?('container') ? @options['container'] : 'default'
|
69
62
|
|
70
|
-
logger.fatal(
|
71
|
-
logger.fatal(
|
63
|
+
logger.fatal('Azure backend storage account container must be a string!') unless container.is_a?(String)
|
64
|
+
logger.fatal('Azure backend storage account container must not be blank!') if container.strip.empty?
|
72
65
|
|
73
|
-
key = @options.key?(
|
66
|
+
key = @options.key?('key') ? @options['key'] : File.join('%<service>s', '%<config>s', '%<component>s' + @@ext)
|
74
67
|
|
75
|
-
logger.fatal(
|
76
|
-
logger.fatal(
|
68
|
+
logger.fatal('Azure backend storage account key must be a string!') unless key.is_a?(String)
|
69
|
+
logger.fatal('Azure backend storage account key must not be blank!') if key.strip.empty?
|
77
70
|
|
78
|
-
@variables.core.keys.map{ |sym| sym.to_s }.each do |core|
|
79
|
-
|
71
|
+
@variables.core.keys.map { |sym| sym.to_s }.each do |core|
|
72
|
+
unless container.include?("%{#{core}}") || key.include?("%{#{core}}") ||
|
73
|
+
container.include?("%<#{core}>s") || key.include?("%<#{core}>s")
|
74
|
+
logger.fatal("Azure backend container or key must include %<#{core}>s.")
|
75
|
+
end
|
80
76
|
end
|
81
77
|
|
82
78
|
begin
|
@@ -84,14 +80,14 @@ module TerraformWrapper
|
|
84
80
|
account = account % @variables.identifiers
|
85
81
|
container = container % @variables.identifiers
|
86
82
|
key = key % @variables.identifiers
|
87
|
-
rescue
|
88
|
-
logger.fatal(
|
83
|
+
rescue StandardError
|
84
|
+
logger.fatal('Azure backend options contain identifiers that are not included in the configuration file!')
|
89
85
|
end
|
90
86
|
|
91
|
-
if key.length > 1024
|
87
|
+
if key.length > 1024
|
92
88
|
logger.fatal("Key: #{key} is too long for backend of type: #{@@type}")
|
93
|
-
|
94
|
-
logger.warn("Key for backend of type: #{@@type} exceeds 256 characters. This will not work with the Azure Storage Emulator. If key is not being overriden, consider using less identifiers.")
|
89
|
+
elsif key.length > 256
|
90
|
+
logger.warn("Key for backend of type: #{@@type} exceeds 256 characters. This will not work with the Azure Storage Emulator. If key is not being overriden, consider using less identifiers.")
|
95
91
|
end
|
96
92
|
|
97
93
|
@group = group
|
@@ -100,20 +96,16 @@ module TerraformWrapper
|
|
100
96
|
@key = key
|
101
97
|
end
|
102
98
|
|
103
|
-
###############################################################################
|
104
|
-
|
99
|
+
###############################################################################
|
105
100
|
end
|
106
101
|
|
107
|
-
###############################################################################
|
108
|
-
|
102
|
+
###############################################################################
|
109
103
|
end
|
110
104
|
|
111
|
-
###############################################################################
|
112
|
-
|
105
|
+
###############################################################################
|
113
106
|
end
|
114
107
|
|
115
|
-
###############################################################################
|
116
|
-
|
108
|
+
###############################################################################
|
117
109
|
end
|
118
110
|
|
119
111
|
###############################################################################
|
@@ -1,13 +1,11 @@
|
|
1
1
|
###############################################################################
|
2
2
|
|
3
3
|
module TerraformWrapper
|
4
|
+
###############################################################################
|
4
5
|
|
5
|
-
|
6
|
-
|
7
|
-
VERSION = "1.3.0"
|
8
|
-
|
9
|
-
###############################################################################
|
6
|
+
VERSION = '1.3.1'
|
10
7
|
|
8
|
+
###############################################################################
|
11
9
|
end
|
12
10
|
|
13
11
|
###############################################################################
|
data/lib/terraform-wrapper.rb
CHANGED
@@ -11,46 +11,52 @@ require_relative 'terraform-wrapper/common'
|
|
11
11
|
###############################################################################
|
12
12
|
|
13
13
|
module TerraformWrapper
|
14
|
+
###############################################################################
|
14
15
|
|
15
|
-
|
16
|
-
|
17
|
-
@logger = TerraformWrapper::Shared::Logging.logger_for("TerraformWrapper")
|
16
|
+
@logger = TerraformWrapper::Shared::Logging.logger_for('TerraformWrapper')
|
18
17
|
|
19
|
-
###############################################################################
|
18
|
+
###############################################################################
|
20
19
|
|
21
20
|
@logger.info("Terraform Wrapper for Ruby - version: #{TerraformWrapper::VERSION}")
|
22
21
|
|
23
|
-
###############################################################################
|
22
|
+
###############################################################################
|
24
23
|
|
25
|
-
def self.deployment_tasks(component:, options:
|
24
|
+
def self.deployment_tasks(component:, service:, options: {})
|
26
25
|
@logger.info("Building tasks for service: #{service}, component: #{component}...")
|
27
26
|
|
28
|
-
@logger.fatal(
|
29
|
-
|
30
|
-
binary_options =
|
31
|
-
binary_options[
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
code_options
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
config_options
|
41
|
-
config_options[
|
42
|
-
|
43
|
-
config_options[
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
27
|
+
@logger.fatal('Options must be specified as a hash!') unless options.is_a?(Hash)
|
28
|
+
|
29
|
+
binary_options = {}
|
30
|
+
binary_options['base'] =
|
31
|
+
options.key?('binary-base') ? options['binary-base'] : File.join(Dir.pwd, 'vendor', 'terraform')
|
32
|
+
binary_options['version'] =
|
33
|
+
options.key?('binary-version') ? options['binary-version'] : Shared::Latest.instance.version
|
34
|
+
|
35
|
+
code_options = {}
|
36
|
+
code_options['base'] = options.key?('code-base') ? options['code-base'] : File.join(Dir.pwd, 'terraform')
|
37
|
+
code_options['name'] = component
|
38
|
+
|
39
|
+
config_options = {}
|
40
|
+
config_options['auth-azure'] =
|
41
|
+
options.key?('config-auth-azure') ? options['config-auth-azure'] : false
|
42
|
+
config_options['auth-azure-options'] =
|
43
|
+
options.key?('config-auth-azure-options') ? options['config-auth-azure-options'] : {}
|
44
|
+
config_options['base'] =
|
45
|
+
options.key?('config-base') ? options['config-base'] : File.join(Dir.pwd, 'config')
|
46
|
+
config_options['backend'] =
|
47
|
+
options.key?('config-backend') ? options['config-backend'] : 'local'
|
48
|
+
config_options['backend-options'] =
|
49
|
+
options.key?('config-backend-options') ? options['config-backend-options'] : {}
|
50
|
+
config_options['service'] = service
|
51
|
+
|
52
|
+
provider_options = {}
|
53
|
+
provider_options['platforms'] = options.key?('provider-platforms') ? options['provider-platforms'] : []
|
48
54
|
|
49
55
|
provider = TerraformWrapper::Shared::Provider.new(options: provider_options)
|
50
56
|
binary = TerraformWrapper::Shared::Binary.new(options: binary_options, provider: provider)
|
51
57
|
code = TerraformWrapper::Shared::Code.new(options: code_options)
|
52
58
|
|
53
|
-
tasks =
|
59
|
+
tasks = []
|
54
60
|
tasks << TerraformWrapper::Tasks::Apply.new(binary: binary, code: code, options: config_options)
|
55
61
|
tasks << TerraformWrapper::Tasks::Binary.new(binary: binary)
|
56
62
|
tasks << TerraformWrapper::Tasks::Clean.new(code: code)
|
@@ -62,11 +68,10 @@ module TerraformWrapper
|
|
62
68
|
tasks << TerraformWrapper::Tasks::Taint.new(binary: binary, code: code, options: config_options)
|
63
69
|
tasks << TerraformWrapper::Tasks::Upgrade.new(binary: binary, code: code)
|
64
70
|
tasks << TerraformWrapper::Tasks::Validate.new(binary: binary, code: code)
|
65
|
-
|
71
|
+
tasks
|
66
72
|
end
|
67
73
|
|
68
|
-
###############################################################################
|
69
|
-
|
74
|
+
###############################################################################
|
70
75
|
end
|
71
76
|
|
72
77
|
###############################################################################
|
data/terraform-wrapper.gemspec
CHANGED
@@ -4,33 +4,35 @@
|
|
4
4
|
|
5
5
|
###############################################################################
|
6
6
|
|
7
|
-
require_relative
|
7
|
+
require_relative 'lib/terraform-wrapper/version'
|
8
8
|
|
9
9
|
###############################################################################
|
10
10
|
|
11
11
|
Gem::Specification.new do |spec|
|
12
|
-
spec.name =
|
12
|
+
spec.name = 'terraform-wrapper'
|
13
13
|
spec.version = TerraformWrapper::VERSION
|
14
|
-
spec.authors = [
|
15
|
-
spec.email = [
|
14
|
+
spec.authors = ['Richard Lees']
|
15
|
+
spec.email = ['git0@bitservices.io']
|
16
16
|
|
17
|
-
spec.summary =
|
18
|
-
spec.description =
|
19
|
-
spec.homepage =
|
20
|
-
spec.license =
|
17
|
+
spec.summary = 'A ruby wrapper for managing Terraform binaries and remote state.'
|
18
|
+
spec.description = 'A ruby wrapper for managing Terraform binaries and remote state. Each Terraform command (plan, apply, etc) is wrapped so that the correct binary is used and remote state referenced.'
|
19
|
+
spec.homepage = 'https://gitlab.com/bitservices/ruby/terraform-wrapper/'
|
20
|
+
spec.license = 'MIT'
|
21
21
|
|
22
|
-
spec.required_ruby_version = Gem::Requirement.new(
|
22
|
+
spec.required_ruby_version = Gem::Requirement.new('>= 2.6.0')
|
23
23
|
|
24
|
-
spec.metadata[
|
25
|
-
spec.metadata[
|
24
|
+
spec.metadata['homepage_uri'] = spec.homepage
|
25
|
+
spec.metadata['source_code_uri'] = spec.homepage
|
26
26
|
|
27
27
|
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
28
|
-
`git ls-files -z`.split("\x0").reject
|
28
|
+
`git ls-files -z`.split("\x0").reject do |f|
|
29
|
+
f.match(%r{\A(?:archlinux|test|spec|features)/}) or f.match(/\Aavatar(?:_group)?\.png\z/)
|
30
|
+
end
|
29
31
|
end
|
30
32
|
|
31
|
-
spec.bindir =
|
33
|
+
spec.bindir = 'exe'
|
32
34
|
spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
|
33
|
-
spec.require_paths = [
|
35
|
+
spec.require_paths = ['lib']
|
34
36
|
|
35
37
|
spec.add_dependency 'rake', '~> 13.0'
|
36
38
|
spec.add_dependency 'rubyzip', '~> 2.3'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: terraform-wrapper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Richard Lees
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-12-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -126,7 +126,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
126
126
|
- !ruby/object:Gem::Version
|
127
127
|
version: '0'
|
128
128
|
requirements: []
|
129
|
-
rubygems_version: 3.3.
|
129
|
+
rubygems_version: 3.3.26
|
130
130
|
signing_key:
|
131
131
|
specification_version: 4
|
132
132
|
summary: A ruby wrapper for managing Terraform binaries and remote state.
|