terrafying 1.7.5 → 1.7.10
Sign up to get free protection for your applications and to get access to all the features.
- 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
|