roadworker 0.5.9.beta5 → 0.5.9.beta6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d74f6860010879a7fbd98866c9ff2915a8b392a7
4
- data.tar.gz: 4a46f9a63ff010a97f613168d51116c9d79341b2
3
+ metadata.gz: f1eb8c3a93ef58551d55534c8a67cb588e7e85ca
4
+ data.tar.gz: e34029aac5acf924a1898f74856069ee5e8e00e6
5
5
  SHA512:
6
- metadata.gz: 30198c307930eb489d90138ecb6f8ea012940a26db4905f38e1e1982e452627a8003bd161dc55292f200a13ff494ce5b9521a21200dfcef4fb779c8510132159
7
- data.tar.gz: 9335b7bf22ce6bc0e918e9763bd565017f9d7c89f44dce1ea2a40c0c9871c657ec24c80b4f9966965403fa55f3df45631427915f46f7a83966bb8818ecd583e8
6
+ metadata.gz: f03d84f50cd76e0f9f6f4e861e3e521c2ac0eea19bcfa7ce1167b764cec2fa7ad2f0fbae5383a49770788be2026bf4c4ef32785fc0adc6f27be5df093b06379a
7
+ data.tar.gz: 07da904da92920d8be762e6cb090a960195d3ec28b77feef76b10bac579ef5deae12f97a469c42fc0810d7eebce0de0e4e084f4a5965e50e90181beeec060329
data/README.md CHANGED
@@ -183,13 +183,23 @@ end
183
183
  ### Dynamic private DNS example
184
184
 
185
185
  ```ruby
186
+ require 'aws-sdk'
187
+
186
188
  hosted_zone "us-east-1.my.local." do
187
189
  vpc "us-east-1", "vpc-xxxxxxxx"
188
190
 
189
- AWS::EC2.new(region: "us-east-1").vpcs["vpc-xxxxxxxx"].instances.each {|instance|
190
- rrset "#{instance.tags.Name}.us-east-1.my.local.", "A" do
191
+ resp = Aws::EC2::Client.new(region: "us-east-1").describe_instances(filters:[{ name: 'vpc-id', values: ["vpc-xxxxxxxx"] }])
192
+ instances = resp.reservations.each_with_object({}) do |reservation, reservations|
193
+ reservations.merge!(reservation.instances.each_with_object({}) do |instance, instances|
194
+ tag_name = instance.tags.find {|tag| tag['key'] == 'Name' }
195
+ instances[instance.private_ip_address] = tag_name['value'] if tag_name and tag_name['value'] != ''
196
+ end)
197
+ end
198
+
199
+ instances.each {|private_ip_address, tag_name|
200
+ rrset "#{tag_name}.us-east-1.my.local.", "A" do
191
201
  ttl 300
192
- resource_records instance.private_ip_address
202
+ resource_records private_ip_address
193
203
  end
194
204
  }
195
205
  end
@@ -63,13 +63,23 @@ module Roadworker
63
63
  end
64
64
 
65
65
  def walk_hosted_zones(dsl)
66
- expected = collection_to_hash(dsl.hosted_zones) {|i| [normalize_name(i.name), i.vpcs.map(&:vpc_id).sort] }
67
- actual = collection_to_hash(@route53.hosted_zones) {|i| [normalize_name(i.name), i.vpcs.map(&:vpc_id).sort] }
66
+ expected = collection_to_hash(dsl.hosted_zones) {|i| [normalize_name(i.name), i.vpcs.empty?, normalize_id(i.id)] }
67
+ actual = collection_to_hash(@route53.hosted_zones) {|i| [normalize_name(i.name), i.vpcs.empty?, normalize_id(i.id)] }
68
68
 
69
69
  expected.each do |keys, expected_zone|
70
- name = keys[0]
70
+ name, private_zone, id = keys
71
71
  next unless matched_zone?(name)
72
- actual_zone = actual.delete(keys)
72
+ if id
73
+ actual_zone = actual.delete(keys)
74
+ unless actual_zone
75
+ log(:warn, "Hosted zone not found", :yellow, "#{name} (#{id})")
76
+ next
77
+ end
78
+ else
79
+ actual_keys, actual_zone = actual.find {|(n, p, _), _| n == name && p == private_zone }
80
+ actual.delete(actual_keys) if actual_keys
81
+ end
82
+
73
83
  actual_zone ||= @route53.hosted_zones.create(name, :vpc => expected_zone.vpcs.first)
74
84
 
75
85
  walk_vpcs(expected_zone, actual_zone)
@@ -171,5 +181,9 @@ module Roadworker
171
181
  name.downcase.sub(/\.\z/, '')
172
182
  end
173
183
 
184
+ def normalize_id(id)
185
+ id.sub(%r!^/hostedzone/!, '') if id
186
+ end
187
+
174
188
  end # Client
175
189
  end # Roadworker
@@ -88,12 +88,13 @@ module Roadworker
88
88
 
89
89
  def output_zone(zone)
90
90
  name = zone[:name].inspect
91
+ id = zone[:id].sub(%r!^/hostedzone/!, '').inspect
91
92
  rrsets = zone[:rrsets]
92
93
  vpcs = output_vpcs(zone[:vpcs])
93
94
  vpcs = " #{vpcs}\n\n" if vpcs
94
95
 
95
96
  return(<<-EOS)
96
- hosted_zone #{name} do
97
+ hosted_zone #{name}#{zone[:vpcs].empty? ? '' : ", #{id}"} do
97
98
  #{vpcs
98
99
  }#{rrsets.map {|i| output_rrset(i) }.join("\n").chomp}
99
100
  end
@@ -50,8 +50,8 @@ module Roadworker
50
50
  end
51
51
  end
52
52
 
53
- def hosted_zone(name, &block)
54
- @result.hosted_zones << Hostedzone.new(@context, name, [], &block).result
53
+ def hosted_zone(name, id = nil, &block)
54
+ @result.hosted_zones << Hostedzone.new(@context, name, id, [], &block).result
55
55
  end
56
56
 
57
57
  class Hostedzone
@@ -59,11 +59,12 @@ module Roadworker
59
59
 
60
60
  attr_reader :result
61
61
 
62
- def initialize(context, name, rrsets = [], &block)
62
+ def initialize(context, name, id, rrsets = [], &block)
63
63
  @name = name
64
64
  @context = context.merge(:hosted_zone_name => name)
65
65
 
66
66
  @result = OpenStruct.new({
67
+ :id => id,
67
68
  :name => name,
68
69
  :vpcs => [],
69
70
  :resource_record_sets => rrsets,
@@ -29,7 +29,7 @@ module Roadworker
29
29
  Collection.batch(@options.route53.list_hosted_zones, :hosted_zones) do |zone|
30
30
  next unless matched_zone?(zone.name)
31
31
  resp = @options.route53.get_hosted_zone(id: zone.id)
32
- zone_h = { name: zone.name, vpcs: resp.vp_cs }
32
+ zone_h = { id: zone.id, name: zone.name, vpcs: resp.vp_cs }
33
33
  hosted_zones << zone_h
34
34
 
35
35
  rrsets = []
@@ -1,3 +1,3 @@
1
1
  module Roadworker
2
- VERSION = "0.5.9.beta5"
2
+ VERSION = "0.5.9.beta6"
3
3
  end
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.beta5
4
+ version: 0.5.9.beta6
5
5
  platform: ruby
6
6
  authors:
7
7
  - winebarrel
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-10-13 00:00:00.000000000 Z
11
+ date: 2018-02-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk