terrafying-components 1.13.0 → 1.13.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/lib/terrafying/components/service.rb +3 -3
- data/lib/terrafying/components/version.rb +1 -1
- data/lib/terrafying/components/vpc.rb +61 -12
- metadata +4 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e87aa6a31720eaa6bcf59f5a2905b82f8c4041bd05395ec58759966eafc9354c
|
4
|
+
data.tar.gz: 8824ab8ebbfbe49595e81f119077518d9f521bc036dcd7f2ec0b49fe1a604f68
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 25c885618f286940a020c28df09621883fdc18e0362bcb68410e49b0c44ec150a38783bb11dffb7001fca9dd610fc4fe0ebc17daeb93ae89b8a310b4c73efb8c
|
7
|
+
data.tar.gz: d2432d707a88c8ed0231706abf493821451c80ff8c8f143b5a0abc3cb3707742ab8713c94c5a36762ee27683a1e29acf1dcd04c3f401ccb505afd5a322090f4f
|
@@ -136,12 +136,12 @@ module Terrafying
|
|
136
136
|
@egress_security_group = @instance_set.security_group
|
137
137
|
end
|
138
138
|
|
139
|
-
|
139
|
+
@zone.add_alias_in(self, name, @load_balancer.alias_config)
|
140
140
|
elsif set == StaticSet
|
141
|
-
|
141
|
+
@zone.add_record_in(self, name, @instance_set.instances.map(&:ip_address))
|
142
142
|
@instance_set.instances.each do |i|
|
143
143
|
@domain_names << vpc.zone.qualify(i.name)
|
144
|
-
|
144
|
+
@zone.add_record_in(self, i.name, [i.ip_address])
|
145
145
|
end
|
146
146
|
end
|
147
147
|
|
@@ -32,6 +32,9 @@ module Terrafying
|
|
32
32
|
@name = name
|
33
33
|
@id = vpc.vpc_id
|
34
34
|
@cidr = vpc.cidr_block
|
35
|
+
@azs = aws.availability_zones
|
36
|
+
@remaining_ip_space = NetAddr::Tree.new
|
37
|
+
@remaining_ip_space.add! cidr
|
35
38
|
@tags = {}
|
36
39
|
@zone = Terrafying::Components::Zone.find_by_tag(vpc: @id)
|
37
40
|
raise 'Failed to find zone' if @zone.nil?
|
@@ -57,6 +60,17 @@ module Terrafying
|
|
57
60
|
# need to sort subnets so they are in az order
|
58
61
|
@subnets.each { |_, s| s.sort! { |a, b| a.az <=> b.az } }
|
59
62
|
|
63
|
+
@subnets.each do |_,subnet|
|
64
|
+
subnet.each do |s|
|
65
|
+
drop_subnet!(s.cidr)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
@nat_gateways = []
|
70
|
+
aws.nat_gateways_for_vpc(vpc.vpc_id).each do |nat_gateway|
|
71
|
+
@nat_gateways << nat_gateway.nat_gateway_id
|
72
|
+
end
|
73
|
+
|
60
74
|
tags = vpc.tags.select { |tag| tag.key == 'ssh_group' }
|
61
75
|
@ssh_group = if tags.count > 0
|
62
76
|
tags[0].value
|
@@ -336,7 +350,6 @@ module Terrafying
|
|
336
350
|
if targets.count == 0
|
337
351
|
raise "Run out of ip space to allocate a /#{bit_size}"
|
338
352
|
end
|
339
|
-
|
340
353
|
target = targets[0]
|
341
354
|
|
342
355
|
@remaining_ip_space.delete!(target)
|
@@ -354,7 +367,26 @@ module Terrafying
|
|
354
367
|
new_subnet.to_s
|
355
368
|
end
|
356
369
|
|
370
|
+
def drop_subnet!(raw_cidr)
|
371
|
+
|
372
|
+
cidr = NetAddr::CIDR.create(raw_cidr)
|
373
|
+
bit_size = cidr.bits
|
374
|
+
target = @remaining_ip_space.longest_match(cidr)
|
375
|
+
|
376
|
+
@remaining_ip_space.delete!(target)
|
377
|
+
|
378
|
+
if target.bits != bit_size
|
379
|
+
target.remainder(cidr).each do |rem|
|
380
|
+
@remaining_ip_space.add!(rem)
|
381
|
+
end
|
382
|
+
end
|
383
|
+
end
|
384
|
+
|
357
385
|
def allocate_subnets!(name, options = {})
|
386
|
+
allocate_subnets_in!(self, name, options)
|
387
|
+
end
|
388
|
+
|
389
|
+
def allocate_subnets_in!(ctx, name, options = {})
|
358
390
|
options = {
|
359
391
|
public: false,
|
360
392
|
bit_size: @subnet_size,
|
@@ -369,20 +401,37 @@ module Terrafying
|
|
369
401
|
else
|
370
402
|
[nil] * @azs.count
|
371
403
|
end
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
404
|
+
if @subnets.has_key?(name.to_sym)
|
405
|
+
|
406
|
+
@subnets[name.to_sym].zip(gateways).map do |subnet, gateway|
|
407
|
+
subnet_options = { tags: { subnet_name: name }.merge(options[:tags]).merge(@tags) }
|
408
|
+
unless gateway.nil?
|
409
|
+
if options[:public]
|
410
|
+
subnet_options[:gateway] = gateway
|
411
|
+
elsif options[:internet]
|
412
|
+
subnet_options[:nat_gateway] = gateway
|
413
|
+
end
|
380
414
|
end
|
415
|
+
ctx.add! Terrafying::Components::Subnet.create_in(
|
416
|
+
self, name, subnet.az, subnet.cidr, subnet_options
|
417
|
+
)
|
381
418
|
end
|
382
419
|
|
383
|
-
|
384
|
-
|
385
|
-
|
420
|
+
else
|
421
|
+
@subnets[name] = @azs.zip(gateways).map do |az, gateway|
|
422
|
+
subnet_options = { tags: { subnet_name: name }.merge(options[:tags]).merge(@tags) }
|
423
|
+
unless gateway.nil?
|
424
|
+
if options[:public]
|
425
|
+
subnet_options[:gateway] = gateway
|
426
|
+
elsif options[:internet]
|
427
|
+
subnet_options[:nat_gateway] = gateway
|
428
|
+
end
|
429
|
+
end
|
430
|
+
|
431
|
+
ctx.add! Terrafying::Components::Subnet.create_in(
|
432
|
+
self, name, az, extract_subnet!(options[:bit_size]), subnet_options
|
433
|
+
)
|
434
|
+
end
|
386
435
|
end
|
387
436
|
end
|
388
437
|
end
|
metadata
CHANGED
@@ -1,29 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: terrafying-components
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.13.
|
4
|
+
version: 1.13.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- uSwitch Limited
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-07-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: bundler
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - "~>"
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '1.11'
|
20
|
-
type: :development
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - "~>"
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '1.11'
|
27
13
|
- !ruby/object:Gem::Dependency
|
28
14
|
name: rake
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|
@@ -72,14 +58,14 @@ dependencies:
|
|
72
58
|
requirements:
|
73
59
|
- - ">="
|
74
60
|
- !ruby/object:Gem::Version
|
75
|
-
version: 1.7.
|
61
|
+
version: 1.7.6
|
76
62
|
type: :runtime
|
77
63
|
prerelease: false
|
78
64
|
version_requirements: !ruby/object:Gem::Requirement
|
79
65
|
requirements:
|
80
66
|
- - ">="
|
81
67
|
- !ruby/object:Gem::Version
|
82
|
-
version: 1.7.
|
68
|
+
version: 1.7.6
|
83
69
|
- !ruby/object:Gem::Dependency
|
84
70
|
name: xxhash
|
85
71
|
requirement: !ruby/object:Gem::Requirement
|