cloudstrap 0.35.5.pre → 0.37.0.pre
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/bin/cloudstrap-dns +10 -11
- data/lib/cloudstrap/amazon/route53.rb +19 -0
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ef518a74f8597223713702e148199c9f1aac42ed
|
4
|
+
data.tar.gz: a4beb58a28a11b5106dc5496b698ff6f5b87d4ec
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9213c65fa3067faab737ae355959fa12790135845aca95e59201849057066cfd88f73416c87155ed27fcf2d5fc4ed0cbe7521b70da4ed2d22cca68bf1e2c6802
|
7
|
+
data.tar.gz: b03645e48e6960b61d004b63782f2a8d1cd73cc4cdae6a9be0edce779c7e6c6d0120754e104f1b6b49438ca63e524c3db298c328b58b022bb013b17586c43cae
|
data/bin/cloudstrap-dns
CHANGED
@@ -33,10 +33,9 @@ VPC = ENV.fetch('CLOUDSTRAP_VPC_ID') { cache.fetch :vpc_id }
|
|
33
33
|
|
34
34
|
abort "VPC ID missing from cache. Have you run cloudstrap yet?" if VPC.nil?
|
35
35
|
|
36
|
-
ZONE = route53.zone(DOMAIN)
|
36
|
+
ZONE = route53.zone(route53.longest_matching_suffix(DOMAIN) || '')
|
37
37
|
|
38
|
-
|
39
|
-
abort "Invalid Zone: #{DOMAIN}" unless ZONE_ID
|
38
|
+
abort "Invalid Zone: #{DOMAIN}" unless ZONE
|
40
39
|
|
41
40
|
load_balancers = BurdenedAcrobat::LoadBalancers.new
|
42
41
|
|
@@ -82,18 +81,18 @@ hsm = services.fetch('hcp/hsm-server').first
|
|
82
81
|
puts <<-EOS
|
83
82
|
# Configuring the following DNS records...
|
84
83
|
|
85
|
-
hcp
|
86
|
-
hsm
|
87
|
-
identity
|
88
|
-
*.identity
|
84
|
+
hcp.#{DOMAIN} IN A #{hcp.canonical_hosted_zone_name}
|
85
|
+
hsm.#{DOMAIN} IN A #{hsm.canonical_hosted_zone_name}
|
86
|
+
identity.#{DOMAIN} IN A #{identity.canonical_hosted_zone_name}
|
87
|
+
*.identity.#{DOMAIN} IN CNAME identity.#{DOMAIN}
|
89
88
|
|
90
89
|
EOS
|
91
90
|
|
92
91
|
change = Path53.change(ZONE).batch do
|
93
|
-
add a
|
94
|
-
add a
|
95
|
-
add a
|
96
|
-
add cname
|
92
|
+
add a "hcp.#{DOMAIN}", hcp
|
93
|
+
add a "hsm.#{DOMAIN}", hsm
|
94
|
+
add a "identity.#{DOMAIN}", identity
|
95
|
+
add cname "*.identity.#{DOMAIN}", "identity.#{DOMAIN}"
|
97
96
|
end.apply!
|
98
97
|
|
99
98
|
loop do
|
@@ -25,6 +25,25 @@ module Cloudstrap
|
|
25
25
|
zones.find { |zone| zone.name == name }
|
26
26
|
end
|
27
27
|
|
28
|
+
Contract String => Maybe[String]
|
29
|
+
def longest_matching_suffix(name)
|
30
|
+
candidates = {}
|
31
|
+
name.split('.').reverse.reduce('') do |domain, fragment|
|
32
|
+
[fragment, domain].join('.').tap do |suffix|
|
33
|
+
candidates[suffix] = zones.select do |zone|
|
34
|
+
zone.name.end_with? suffix
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
longest = candidates
|
40
|
+
.reject { |_, zones| zones.empty? }
|
41
|
+
.sort_by { |name, _| name.length }
|
42
|
+
.last
|
43
|
+
|
44
|
+
longest ? longest.first : nil
|
45
|
+
end
|
46
|
+
|
28
47
|
Contract String => Maybe[String]
|
29
48
|
def zone_id(name)
|
30
49
|
return unless zone = zone(name)
|