terrafying 1.7.5 → 1.7.10
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/lib/terrafying/aws.rb +34 -1
- data/lib/terrafying/generator.rb +27 -1
- data/lib/terrafying/version.rb +1 -1
- metadata +16 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 86368229c02629676027388525b74e13ea2b7fe9dff7e0da17629c2e45f109d9
|
|
4
|
+
data.tar.gz: 88f521a8c94969e0f1d18ed50ed35fc1c152a4c091f124d2b2cb58e29b0f6145
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: b29c4f8c6677c89211e11bf839d13845d3e542a4bb6b4edc5218874dc090d66f49e45fba954e576113ef91dc3950b6c2bf1b83ee716fe8c3aa412561fbaa09a1
|
|
7
|
+
data.tar.gz: fac26af997b1d309071cfd4ce4e1e8980a9c0433aa975754d2e0d05cc701d2ed77574e4360407eb0f82d57b034d48635992d9c1c8f70039733042dd5f4d90e6a
|
data/lib/terrafying/aws.rb
CHANGED
|
@@ -7,6 +7,7 @@ require 'aws-sdk-route53'
|
|
|
7
7
|
require 'aws-sdk-s3'
|
|
8
8
|
require 'aws-sdk-sts'
|
|
9
9
|
require 'aws-sdk-pricing'
|
|
10
|
+
require 'aws-sdk-kafka'
|
|
10
11
|
require 'json'
|
|
11
12
|
|
|
12
13
|
Aws.use_bundled_cert!
|
|
@@ -36,7 +37,7 @@ module Terrafying
|
|
|
36
37
|
@s3_client = ::Aws::S3::Client.new
|
|
37
38
|
@sts_client = ::Aws::STS::Client.new
|
|
38
39
|
@pricing_client = ::Aws::Pricing::Client.new(region: 'us-east-1') # no AWS Pricing endpoint in Europe
|
|
39
|
-
|
|
40
|
+
@msk_client = ::Aws::Kafka::Client.new
|
|
40
41
|
@region = region
|
|
41
42
|
end
|
|
42
43
|
|
|
@@ -166,6 +167,26 @@ module Terrafying
|
|
|
166
167
|
end
|
|
167
168
|
end
|
|
168
169
|
|
|
170
|
+
def nat_gateways_for_vpc(vpc_id)
|
|
171
|
+
@nat_gateways_for_vpc ||= {}
|
|
172
|
+
@nat_gateways_for_vpc[vpc_id] ||=
|
|
173
|
+
begin
|
|
174
|
+
resp = @ec2_client.describe_nat_gateways(
|
|
175
|
+
filter: [
|
|
176
|
+
{ name: 'vpc-id', values: [vpc_id] }
|
|
177
|
+
]
|
|
178
|
+
)
|
|
179
|
+
|
|
180
|
+
nat_gateways = resp.nat_gateways
|
|
181
|
+
|
|
182
|
+
if nat_gateways.count >= 1
|
|
183
|
+
nat_gateways
|
|
184
|
+
elsif nat_gateways.count < 1
|
|
185
|
+
raise "No nat-gateways for vpc #{vpc_id} were found"
|
|
186
|
+
end
|
|
187
|
+
end
|
|
188
|
+
end
|
|
189
|
+
|
|
169
190
|
def security_groups(*names)
|
|
170
191
|
names.map { |n| security_group(n) }
|
|
171
192
|
end
|
|
@@ -523,6 +544,18 @@ module Terrafying
|
|
|
523
544
|
return vcpu.to_i if vcpu
|
|
524
545
|
end
|
|
525
546
|
end
|
|
547
|
+
|
|
548
|
+
def msk_brokers(cluster_arn)
|
|
549
|
+
@brokers ||= {}
|
|
550
|
+
@brokers[cluster_arn] ||= begin
|
|
551
|
+
resp = @msk_client.get_bootstrap_brokers(cluster_arn: cluster_arn)
|
|
552
|
+
brokers = resp.bootstrap_broker_string_tls.split(',')
|
|
553
|
+
|
|
554
|
+
raise "No brokers found for cluster with arn: \"#{cluster_arn}\"'" if brokers.empty?
|
|
555
|
+
|
|
556
|
+
brokers
|
|
557
|
+
end
|
|
558
|
+
end
|
|
526
559
|
end
|
|
527
560
|
end
|
|
528
561
|
end
|
data/lib/terrafying/generator.rb
CHANGED
|
@@ -199,6 +199,21 @@ module Terrafying
|
|
|
199
199
|
[name, spec[:alias]].compact.join('.')
|
|
200
200
|
end
|
|
201
201
|
|
|
202
|
+
def required_provider(name, spec)
|
|
203
|
+
@output['terraform'] ||= {}
|
|
204
|
+
@output['terraform']['required_providers'] ||= {}
|
|
205
|
+
raise "Duplicate required_provider configuration detected for #{name}" if @output['terraform']['required_providers'].key? name.to_s
|
|
206
|
+
|
|
207
|
+
@output['terraform']['required_providers'][name.to_s] = spec
|
|
208
|
+
end
|
|
209
|
+
|
|
210
|
+
def required_version(version)
|
|
211
|
+
@output['terraform'] ||= {}
|
|
212
|
+
raise "required_version already configure" if @output['terraform']['required_version']
|
|
213
|
+
|
|
214
|
+
@output['terraform']['required_version'] = "#{version}"
|
|
215
|
+
end
|
|
216
|
+
|
|
202
217
|
def key_exists_spec_differs(key, name, spec)
|
|
203
218
|
@providers.key?(key) && spec != @providers[key][name.to_s]
|
|
204
219
|
end
|
|
@@ -240,6 +255,16 @@ module Terrafying
|
|
|
240
255
|
RootRef.new(kind: :resource, type: type, name: name)
|
|
241
256
|
end
|
|
242
257
|
|
|
258
|
+
def tf_module(name, spec)
|
|
259
|
+
@output['module'] ||= {}
|
|
260
|
+
|
|
261
|
+
raise "Module already exists #{name}" if @output['module'].key? name.to_s
|
|
262
|
+
|
|
263
|
+
@output['module'][name.to_s] = spec
|
|
264
|
+
|
|
265
|
+
RootRef.new(kind: :module, name: name)
|
|
266
|
+
end
|
|
267
|
+
|
|
243
268
|
def template(relative_path, params = {})
|
|
244
269
|
dir = caller_locations[0].path
|
|
245
270
|
filename = File.join(File.dirname(dir), relative_path)
|
|
@@ -292,7 +317,7 @@ module Terrafying
|
|
|
292
317
|
end
|
|
293
318
|
|
|
294
319
|
def tf_safe(str)
|
|
295
|
-
str.gsub(%r{[\.\s/\?]}, '-')
|
|
320
|
+
str.gsub(%r{[\.\s/\?]}, '-').gsub(%r{\*}, "star")
|
|
296
321
|
end
|
|
297
322
|
end
|
|
298
323
|
|
|
@@ -341,6 +366,7 @@ module Terrafying
|
|
|
341
366
|
provider
|
|
342
367
|
resource
|
|
343
368
|
data
|
|
369
|
+
tf_module
|
|
344
370
|
template
|
|
345
371
|
tf_safe
|
|
346
372
|
id_of
|
data/lib/terrafying/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: terrafying
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.7.
|
|
4
|
+
version: 1.7.10
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- uSwitch Limited
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2021-05-27 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -150,6 +150,20 @@ dependencies:
|
|
|
150
150
|
- - "~>"
|
|
151
151
|
- !ruby/object:Gem::Version
|
|
152
152
|
version: '1'
|
|
153
|
+
- !ruby/object:Gem::Dependency
|
|
154
|
+
name: aws-sdk-kafka
|
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
|
156
|
+
requirements:
|
|
157
|
+
- - "~>"
|
|
158
|
+
- !ruby/object:Gem::Version
|
|
159
|
+
version: '1'
|
|
160
|
+
type: :runtime
|
|
161
|
+
prerelease: false
|
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
163
|
+
requirements:
|
|
164
|
+
- - "~>"
|
|
165
|
+
- !ruby/object:Gem::Version
|
|
166
|
+
version: '1'
|
|
153
167
|
- !ruby/object:Gem::Dependency
|
|
154
168
|
name: aws-sdk-pricing
|
|
155
169
|
requirement: !ruby/object:Gem::Requirement
|