roadworker 0.4.8 → 0.4.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +24 -2
- data/bin/roadwork +1 -0
- data/lib/roadworker/dsl-tester.rb +30 -2
- data/lib/roadworker/version.rb +1 -1
- metadata +24 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6728e9d481aa2975e230a25a60e2ad3a9607f94a
|
4
|
+
data.tar.gz: 0725f50ba8ae99e6b4c9e219763734eb1c9925bf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0b009eb08fece5f8595cd3a5863ea5588c6f7858a95cd4dde574fd294728c620f79cba1db8e57fbb33c2e14edbdb926de1e3430f64014bdc7d9e1f80a068063a
|
7
|
+
data.tar.gz: 59237da6218cd64b1b85d40ab004de59e6730cf9c192acd2574096131a2cbedf408f1726f5582bc9207dcdc69483758ff757b3ef97650a1d28644d729b43a379
|
data/README.md
CHANGED
@@ -5,7 +5,7 @@ Roadworker is a tool to manage Route53.
|
|
5
5
|
It defines the state of Route53 using DSL, and updates Route53 according to DSL.
|
6
6
|
|
7
7
|
[![Gem Version](https://badge.fury.io/rb/roadworker.png)](http://badge.fury.io/rb/roadworker)
|
8
|
-
[![Build Status](https://
|
8
|
+
[![Build Status](https://travis-ci.org/winebarrel/roadworker.svg?branch=master)](https://travis-ci.org/winebarrel/roadworker)
|
9
9
|
|
10
10
|
**Notice**
|
11
11
|
|
@@ -37,6 +37,28 @@ roadwork -a --dry-run
|
|
37
37
|
roudwork -a
|
38
38
|
```
|
39
39
|
|
40
|
+
## Help
|
41
|
+
|
42
|
+
```
|
43
|
+
Usage: roadwork [options]
|
44
|
+
-p, --profile PROFILE_NAME
|
45
|
+
-k, --access-key ACCESS_KEY
|
46
|
+
-s, --secret-key SECRET_KEY
|
47
|
+
-a, --apply
|
48
|
+
-f, --file FILE
|
49
|
+
--dry-run
|
50
|
+
--force
|
51
|
+
--no-health-check-gc
|
52
|
+
-e, --export
|
53
|
+
-o, --output FILE
|
54
|
+
--split
|
55
|
+
--with-soa-ns
|
56
|
+
-t, --test
|
57
|
+
--nameservers SERVERS
|
58
|
+
--no-color
|
59
|
+
--debug
|
60
|
+
```
|
61
|
+
|
40
62
|
## Routefile example
|
41
63
|
|
42
64
|
```ruby
|
@@ -112,7 +134,7 @@ info.winebarrel.jp. A:
|
|
112
134
|
|
113
135
|
## Demo
|
114
136
|
|
115
|
-
![Roadworker Demo](https://
|
137
|
+
![Roadworker Demo](https://raw.githubusercontent.com/winebarrel/roadworker/master/etc/demo.gif)
|
116
138
|
|
117
139
|
## DNS management using GitHub/Bitbucket
|
118
140
|
|
data/bin/roadwork
CHANGED
@@ -45,6 +45,7 @@ ARGV.options do |opt|
|
|
45
45
|
opt.on('', '--with-soa-ns') { options[:with_soa_ns] = true }
|
46
46
|
opt.on('-t', '--test') { mode = :test }
|
47
47
|
opt.on('' , '--nameservers SERVERS', Array) {|v| options[:nameservers] = v }
|
48
|
+
opt.on('' , '--port PORT', Integer) {|v| options[:port] = v }
|
48
49
|
opt.on('' , '--no-color') { options[:color] = false }
|
49
50
|
opt.on('' , '--debug') { options[:debug] = true }
|
50
51
|
opt.parse!
|
@@ -82,11 +82,20 @@ module Roadworker
|
|
82
82
|
expected_value = (record.resource_records || []).map {|i| i[:value].strip }.sort
|
83
83
|
expected_ttl = fetch_dns_name(record.dns_name) ? 60 : record.ttl
|
84
84
|
|
85
|
-
actual_value = response.answer.map {|i|
|
85
|
+
actual_value = response.answer.map {|i|
|
86
|
+
case type
|
87
|
+
when 'TXT', 'SPF'
|
88
|
+
i.txt
|
89
|
+
when 'SRV'
|
90
|
+
[i.priority, i.weight, i.port, fix_srv_host(name, i.host)].join(' ')
|
91
|
+
else
|
92
|
+
i.value
|
93
|
+
end
|
94
|
+
}.map {|i| i.strip }.sort
|
86
95
|
actual_ttls = response.answer.map {|i| i.ttl }
|
87
96
|
|
88
97
|
case type
|
89
|
-
when 'NS', 'PTR', 'MX', 'CNAME'
|
98
|
+
when 'NS', 'PTR', 'MX', 'CNAME', 'SRV'
|
90
99
|
expected_value = expected_value.map {|i| i.downcase.sub(/\.\Z/, '') }
|
91
100
|
actual_value = actual_value.map {|i| i.downcase.sub(/\.\Z/, '') }
|
92
101
|
when 'TXT', 'SPF'
|
@@ -95,6 +104,11 @@ module Roadworker
|
|
95
104
|
actual_value = actual_value.map {|i| i.strip }
|
96
105
|
end
|
97
106
|
|
107
|
+
if ['SRV', 'MX'].include?(type)
|
108
|
+
expected_value = expected_value.map {|i| i.gsub(/\s+/, ' ') }
|
109
|
+
actual_value = actual_value.map {|i| i.gsub(/\s+/, ' ') }
|
110
|
+
end
|
111
|
+
|
98
112
|
expected_message = record.resource_records ? expected_value.map {|i| "#{i}(#{expected_ttl})" }.join(',') : "#{fetch_dns_name(record.dns_name)}(#{expected_ttl})"
|
99
113
|
actual_message = actual_value.zip(actual_ttls).map {|v, t| "#{v}(#{t})" }.join(',')
|
100
114
|
logmsg_expected = "expected=#{expected_message}"
|
@@ -236,9 +250,23 @@ module Roadworker
|
|
236
250
|
|
237
251
|
private
|
238
252
|
|
253
|
+
def fix_srv_host(query_name, host)
|
254
|
+
if (host || '').strip.empty?
|
255
|
+
query_name
|
256
|
+
elsif host =~ /\x1A\Z/
|
257
|
+
host = host.sub(/\x1A\Z/, '')
|
258
|
+
query_name = query_name.split('.')
|
259
|
+
query_name.slice!(0, host.count('.'))
|
260
|
+
host + query_name.join('.')
|
261
|
+
else
|
262
|
+
host
|
263
|
+
end
|
264
|
+
end
|
265
|
+
|
239
266
|
def create_resolver
|
240
267
|
log_file = @options.debug ? Net::DNS::Resolver::Defaults[:log_file] : '/dev/null'
|
241
268
|
resolver_opts = {:log_file => log_file}
|
269
|
+
resolver_opts[:port] = @options.port if @options.port
|
242
270
|
|
243
271
|
if File.exist?(Net::DNS::Resolver::Defaults[:config_file])
|
244
272
|
resolver_opts[:nameservers] = @options.nameservers if @options.nameservers
|
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.4.
|
4
|
+
version: 0.4.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- winebarrel
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-08-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk
|
@@ -17,6 +17,9 @@ dependencies:
|
|
17
17
|
- - '>='
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: 1.48.0
|
20
|
+
- - <
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 2.0.0
|
20
23
|
type: :runtime
|
21
24
|
prerelease: false
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -24,6 +27,9 @@ dependencies:
|
|
24
27
|
- - '>='
|
25
28
|
- !ruby/object:Gem::Version
|
26
29
|
version: 1.48.0
|
30
|
+
- - <
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 2.0.0
|
27
33
|
- !ruby/object:Gem::Dependency
|
28
34
|
name: term-ansicolor
|
29
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -136,6 +142,20 @@ dependencies:
|
|
136
142
|
- - '>='
|
137
143
|
- !ruby/object:Gem::Version
|
138
144
|
version: '0'
|
145
|
+
- !ruby/object:Gem::Dependency
|
146
|
+
name: rubydns
|
147
|
+
requirement: !ruby/object:Gem::Requirement
|
148
|
+
requirements:
|
149
|
+
- - '>='
|
150
|
+
- !ruby/object:Gem::Version
|
151
|
+
version: '0'
|
152
|
+
type: :development
|
153
|
+
prerelease: false
|
154
|
+
version_requirements: !ruby/object:Gem::Requirement
|
155
|
+
requirements:
|
156
|
+
- - '>='
|
157
|
+
- !ruby/object:Gem::Version
|
158
|
+
version: '0'
|
139
159
|
description: Roadworker is a tool to manage Route53. It defines the state of Route53
|
140
160
|
using DSL, and updates Route53 according to DSL.
|
141
161
|
email: sgwr_dts@yahoo.co.jp
|
@@ -146,6 +166,7 @@ extra_rdoc_files: []
|
|
146
166
|
files:
|
147
167
|
- README.md
|
148
168
|
- bin/roadwork
|
169
|
+
- lib/roadworker.rb
|
149
170
|
- lib/roadworker/client.rb
|
150
171
|
- lib/roadworker/collection.rb
|
151
172
|
- lib/roadworker/dsl-converter.rb
|
@@ -158,7 +179,6 @@ files:
|
|
158
179
|
- lib/roadworker/route53-wrapper.rb
|
159
180
|
- lib/roadworker/string-ext.rb
|
160
181
|
- lib/roadworker/version.rb
|
161
|
-
- lib/roadworker.rb
|
162
182
|
homepage: https://bitbucket.org/winebarrel/roadworker
|
163
183
|
licenses:
|
164
184
|
- MIT
|
@@ -179,7 +199,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
179
199
|
version: '0'
|
180
200
|
requirements: []
|
181
201
|
rubyforge_project:
|
182
|
-
rubygems_version: 2.
|
202
|
+
rubygems_version: 2.4.1
|
183
203
|
signing_key:
|
184
204
|
specification_version: 4
|
185
205
|
summary: Roadworker is a tool to manage Route53.
|