roadworker 0.5.9.beta7 → 0.5.9.beta9
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 +5 -5
- data/lib/roadworker/dsl-tester.rb +18 -18
- data/lib/roadworker/route53-ext.rb +30 -0
- data/lib/roadworker/version.rb +1 -1
- metadata +8 -8
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 8b3e4a8978dd100d8c27b1dca7fb25405eddfc9d72ad8ef6a9e794c591b6fed6
|
|
4
|
+
data.tar.gz: 702e28502b895284f95df074180c6960b99cb4c4ea84302d39bfbab460ff2db9
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e9b69f9f92d7dae71edc710e9645ce847241e349f6f0d6b426d62df8c3b801890187e9b6bf603285245d3cc2f744144725d8bc771faab05bce51f059afe5cd50
|
|
7
|
+
data.tar.gz: 233d99f686c86292ab92e9e7c8c6a277f53fcf99980e6144acd5244db33ef0515d1e1b837e487401836a6f0af3e2d89f3e80a389facbfe66f2eb118efbf3fcd7
|
|
@@ -22,7 +22,7 @@ proc {
|
|
|
22
22
|
end
|
|
23
23
|
}.call
|
|
24
24
|
|
|
25
|
-
require '
|
|
25
|
+
require 'dnsruby'
|
|
26
26
|
|
|
27
27
|
module Roadworker
|
|
28
28
|
class DSL
|
|
@@ -30,6 +30,7 @@ module Roadworker
|
|
|
30
30
|
include Roadworker::Log
|
|
31
31
|
include Roadworker::Utils::Helper
|
|
32
32
|
|
|
33
|
+
DEFAULT_CONFIG_FILE = '/etc/resolv.conf'
|
|
33
34
|
DEFAULT_NAMESERVERS = ['8.8.8.8', '8.8.4.4']
|
|
34
35
|
ASTERISK_PREFIX = 'asterisk-of-wildcard'
|
|
35
36
|
RETRY = 3
|
|
@@ -87,11 +88,9 @@ module Roadworker
|
|
|
87
88
|
actual_value = response.answer.map {|i|
|
|
88
89
|
case type
|
|
89
90
|
when 'TXT', 'SPF'
|
|
90
|
-
i.
|
|
91
|
-
when 'SRV'
|
|
92
|
-
[i.priority, i.weight, i.port, fix_srv_host(name, i.host)].join(' ')
|
|
91
|
+
i.data
|
|
93
92
|
else
|
|
94
|
-
i.
|
|
93
|
+
i.rdata_to_string
|
|
95
94
|
end
|
|
96
95
|
}.map {|i| i.strip }.sort
|
|
97
96
|
actual_ttls = response.answer.map {|i| i.ttl }
|
|
@@ -118,11 +117,13 @@ module Roadworker
|
|
|
118
117
|
log(:debug, " #{logmsg_expected}\n #{logmsg_actual}", :white)
|
|
119
118
|
|
|
120
119
|
is_same = false
|
|
120
|
+
check_ttl = true
|
|
121
121
|
|
|
122
122
|
if fetch_dns_name(record.dns_name)
|
|
123
123
|
# A(Alias)
|
|
124
124
|
case fetch_dns_name(record.dns_name).sub(/\.\z/, '')
|
|
125
125
|
when /\.elb\.amazonaws\.com/i
|
|
126
|
+
check_ttl = false
|
|
126
127
|
is_same = response.answer.all? {|a|
|
|
127
128
|
response_query_ptr = query(a.value, 'PTR', error_messages)
|
|
128
129
|
|
|
@@ -135,6 +136,7 @@ module Roadworker
|
|
|
135
136
|
end
|
|
136
137
|
}
|
|
137
138
|
when /\As3-website-(?:[^.]+)\.amazonaws\.com\z/
|
|
139
|
+
check_ttl = false
|
|
138
140
|
response_answer_ip_1_2 = response.answer.map {|a| a.value.split('.').slice(0, 2) }.uniq
|
|
139
141
|
|
|
140
142
|
# try 3 times
|
|
@@ -152,6 +154,7 @@ module Roadworker
|
|
|
152
154
|
}
|
|
153
155
|
end
|
|
154
156
|
when /\.cloudfront\.net\z/
|
|
157
|
+
check_ttl = false
|
|
155
158
|
is_same = response.answer.all? {|a|
|
|
156
159
|
response_query_ptr = query(a.value, 'PTR', error_messages)
|
|
157
160
|
|
|
@@ -176,7 +179,7 @@ module Roadworker
|
|
|
176
179
|
is_same = (expected_value == actual_value)
|
|
177
180
|
end
|
|
178
181
|
|
|
179
|
-
if is_same
|
|
182
|
+
if is_same && check_ttl
|
|
180
183
|
unless actual_ttls.all? {|i| i <= expected_ttl }
|
|
181
184
|
is_same = false
|
|
182
185
|
end
|
|
@@ -225,7 +228,7 @@ module Roadworker
|
|
|
225
228
|
response = query(name, type)
|
|
226
229
|
|
|
227
230
|
if response
|
|
228
|
-
asterisk_answers[key] = response.answer.map {|i| (%w(TXT SPF).include?(type) ? i.
|
|
231
|
+
asterisk_answers[key] = response.answer.map {|i| (%w(TXT SPF).include?(type) ? i.data : i.rdata_to_string).strip }
|
|
229
232
|
end
|
|
230
233
|
end
|
|
231
234
|
|
|
@@ -269,16 +272,14 @@ module Roadworker
|
|
|
269
272
|
resolver_opts = {}
|
|
270
273
|
resolver_opts[:port] = @options.port if @options.port
|
|
271
274
|
|
|
272
|
-
|
|
273
|
-
resolver_opts[:nameservers] =
|
|
274
|
-
Net::DNS::Resolver.new(resolver_opts)
|
|
275
|
-
else
|
|
276
|
-
Tempfile.open(File.basename(__FILE__)) do |f|
|
|
277
|
-
resolver_opts.updated(:config_file => f.path, :nameservers => DEFAULT_NAMESERVERS)
|
|
278
|
-
resolver_opts[:nameservers] = @options.nameservers if @options.nameservers
|
|
279
|
-
Net::DNS::Resolver.new(resolver_opts)
|
|
280
|
-
end
|
|
275
|
+
unless File.exist?(DEFAULT_CONFIG_FILE)
|
|
276
|
+
resolver_opts[:nameservers] = DEFAULT_NAMESERVERS
|
|
281
277
|
end
|
|
278
|
+
|
|
279
|
+
resolver_opts[:nameservers] = @options.nameservers if @options.nameservers
|
|
280
|
+
resolver = Dnsruby::Resolver.new(resolver_opts)
|
|
281
|
+
resolver.do_caching = false
|
|
282
|
+
resolver
|
|
282
283
|
end
|
|
283
284
|
|
|
284
285
|
def fetch_records(dsl)
|
|
@@ -303,12 +304,11 @@ module Roadworker
|
|
|
303
304
|
end
|
|
304
305
|
|
|
305
306
|
def query(name, type, error_messages = nil)
|
|
306
|
-
ctype = Net::DNS.const_get(type)
|
|
307
307
|
response = nil
|
|
308
308
|
|
|
309
309
|
RETRY.times do |i|
|
|
310
310
|
begin
|
|
311
|
-
response = @resolver.query(name,
|
|
311
|
+
response = @resolver.query(name, type)
|
|
312
312
|
break
|
|
313
313
|
rescue => e
|
|
314
314
|
if (i + 1) < RETRY
|
|
@@ -66,6 +66,26 @@ module Aws
|
|
|
66
66
|
'us-west-2' => 'Z38NKT9BP95V3O',
|
|
67
67
|
}
|
|
68
68
|
|
|
69
|
+
# https://docs.aws.amazon.com/general/latest/gr/rande.html#apigateway_region
|
|
70
|
+
API_GATEWAY_HOSTED_ZONE_NAME_IDS = {
|
|
71
|
+
"us-east-2" => "ZOJJZC49E0EPZ",
|
|
72
|
+
"us-east-1" => "Z1UJRXOUMOOFQ8",
|
|
73
|
+
"us-west-1" => "Z2MUQ32089INYE",
|
|
74
|
+
"us-west-2" => "Z2OJLYMUO9EFXC",
|
|
75
|
+
"ap-south-1" => "Z3VO1THU9YC4UR",
|
|
76
|
+
"ap-northeast-3" => "Z2YQB5RD63NC85",
|
|
77
|
+
"ap-northeast-2" => "Z20JF4UZKIW1U8",
|
|
78
|
+
"ap-southeast-1" => "ZL327KTPIQFUL",
|
|
79
|
+
"ap-southeast-2" => "Z2RPCDW04V8134",
|
|
80
|
+
"ap-northeast-1" => "Z1YSHQZHG15GKL",
|
|
81
|
+
"ca-central-1" => "Z19DQILCV0OWEC",
|
|
82
|
+
"eu-central-1" => "Z1U9ULNL0V5AJ3",
|
|
83
|
+
"eu-west-1" => "ZLY8HYME6SFDD",
|
|
84
|
+
"eu-west-2" => "ZJ5UAJN8Y3Z2Q",
|
|
85
|
+
"eu-west-3" => "Z3KY65QIEKYHQQ",
|
|
86
|
+
"sa-east-1" => "ZCMLWB8V5SYIT"
|
|
87
|
+
}
|
|
88
|
+
|
|
69
89
|
class << self
|
|
70
90
|
def normalize_dns_name_options(src)
|
|
71
91
|
dst = {}
|
|
@@ -100,6 +120,8 @@ module Aws
|
|
|
100
120
|
elsif name =~ /\.([^.]+)\.elasticbeanstalk\.com\z/i
|
|
101
121
|
region = $1.downcase
|
|
102
122
|
eb_dns_name_to_alias_target(name, region)
|
|
123
|
+
elsif name =~ /(\A|\.)\.execute-api\.([^.]+)\.amazonaws\.com\z/i
|
|
124
|
+
apigw_dns_name_to_alias_target(name, hosted_zone_id, options)
|
|
103
125
|
else
|
|
104
126
|
raise "Invalid DNS Name: #{name}"
|
|
105
127
|
end
|
|
@@ -143,6 +165,14 @@ module Aws
|
|
|
143
165
|
}
|
|
144
166
|
end
|
|
145
167
|
|
|
168
|
+
def apigw_dns_name_to_alias_target(name, region, hosted_zone_id)
|
|
169
|
+
{
|
|
170
|
+
:hosted_zone_id => API_GATEWAY_HOSTED_ZONE_NAME_IDS[region],
|
|
171
|
+
:dns_name => name,
|
|
172
|
+
:evaluate_target_health => false, # XXX:
|
|
173
|
+
}
|
|
174
|
+
end
|
|
175
|
+
|
|
146
176
|
def cf_dns_name_to_alias_target(name)
|
|
147
177
|
{
|
|
148
178
|
:hosted_zone_id => CF_HOSTED_ZONE_ID,
|
data/lib/roadworker/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: roadworker
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.5.9.
|
|
4
|
+
version: 0.5.9.beta9
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- winebarrel
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2018-
|
|
11
|
+
date: 2018-11-29 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: aws-sdk-route53
|
|
@@ -39,19 +39,19 @@ dependencies:
|
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
40
|
version: '0'
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
|
-
name:
|
|
42
|
+
name: dnsruby
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
44
44
|
requirements:
|
|
45
|
-
- - "
|
|
45
|
+
- - ">="
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: 0
|
|
47
|
+
version: '0'
|
|
48
48
|
type: :runtime
|
|
49
49
|
prerelease: false
|
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
51
|
requirements:
|
|
52
|
-
- - "
|
|
52
|
+
- - ">="
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
|
-
version: 0
|
|
54
|
+
version: '0'
|
|
55
55
|
- !ruby/object:Gem::Dependency
|
|
56
56
|
name: uuid
|
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -252,7 +252,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
252
252
|
version: 1.3.1
|
|
253
253
|
requirements: []
|
|
254
254
|
rubyforge_project:
|
|
255
|
-
rubygems_version: 2.6
|
|
255
|
+
rubygems_version: 2.7.6
|
|
256
256
|
signing_key:
|
|
257
257
|
specification_version: 4
|
|
258
258
|
summary: Roadworker is a tool to manage Route53.
|