Route53管理ツール「Roadworker」の v0.5.2 をリリースしました。
https://github.com/winebarrel/roadworker
主な変更点は以下の通りです。
- Private DNS対応
--target-zone
オプション追加- マジックコメント出力対応
Private DNS対応
以下のようなシンタックスでPrivate HostedZoneを作成できます。
hosted_zone "winebarrel.local." do vpc "us-east-1", "vpc-xxxxxxxx" vpc "us-east-2", "vpc-xxxxxxxx" rrset "www.winebarrel.local.", "A" do ttl 300 resource_records( "10.0.0.1", "10.0.0.2" ) end end
Public/Privateの区別はVPC情報の有無です。公式APIがそんな感じなので*1
Route53の仕様として、作ったHostedZoneのPublic/Privateを変更することはできません。 また、Private HostedZoneには最低一つ以上のVPCを関連づける必要があります。
あと、ネイティブな機能としてEC2インスタンスのNameタグとの連携をサポートしているわけではないのですが、以下のようなRoutefileをcron等で定期的に適用すれば、さくっとダイナミックな内部DNSを作れるかと。
hosted_zone "ap-northeast-1.local." do vpc "ap-northeast-1", "vpc-XXXXXXXX" AWS.ec2.vpcs["vpc-XXXXXXXX"].instances.each {|instance| rrset "#{instance.tags.Name}.ap-northeast-1.local.", "A" do ttl 300 resource_records instance.private_ip_address end } end
--target-zone
オプション
Private DNSの追加で「このHostedZoneだけ適用したい!」みたいなユースケースが増えるかもと思って追加しました。
--target-zone (正規表現)
でマッチしたHostedZoneだけ apply/export/test をするようになります。
エクスポート時のマジックコメント出力
ご要望いただいたので、対応しました。 ファイルにエクスポートすると以下のマジックコメントがつくようになります。
# -*- mode: ruby -*- # vi: set ft=ruby : hosted_zone "winebarrel.jp." do rrset "www.winebarrel.jp.", "A" do ...
piculetのほうはもう少しお待ちください…
aws-sdk-v1
aws-sdk-v1はPrivate DNSに対応していなかったので、プルリクを投げてマージしてもらいました。
ですが、マージの過程でエンバグしたらしくHostedZone#vpcs
が動作しません。
一応、Fixするプルリクを投げていますが、今のところRoadworker側で対応している状態です。
Route53 API
ListHostedZonesとGetHostedZoneのレスポンスのドキュメントが間違っています。
今のところ、ListHostedZonesで関連づけられたVPCの情報は取得できませんし、GetHostedZoneの<VPCs>は<HostedZone>の外側です
2014/11/12 注) ドキュメントは修正されました
その他
VPCの「DNS hostnames」を有効にしないと、VPCからPrivate DNSを引けないようです。 これで少しはまりました。
あ、あとRoadworkerに限らず弊プロダクトのコミッターは随時募集中です。