DNSが苦手な皆様、こんにちは。
技術4課、岩本です。
DNSサーバーの設定変更は、サービス全体への影響が大きくなる場合が多く、いつも神経使います。
AWSでは、マネジメントコンソールから比較的に簡単なGUIでRoute53を利用することが可能です。
ただし、GUI全般の弱点として、差分の確認や実行結果の確認(ドライラン)は難しいです。
そこでRoadworker
を使って、CUIからRoute53を管理してみます。
Roadworker とは?
Roadworkerは、
DSL(Domain-Specific LangDSL)を用いてRoute53の管理が行えるコマンドラインツールです。
Roadworker is a tool to manage Route53. It defines the state of Route53 using DSL, and updates Route53 according to DSL.
インストール
Mac環境などでは、既にRuby/Gemがインストールされていれば、
下記のコマンドでインストールが行えます。
$ gem install roadworker
使い方
- アクセスキー/シークレットキーの登録
$ export AWS_ACCESS_KEY_ID='...'
$ export AWS_SECRET_ACCESS_KEY='...'
- 既存情報のアウトプット
roadwork -e -o Routefile
- ドライラン
roadwork -a --dry-run
- 適用
roadwork -a
Routefileのサンプル
# -*- mode: ruby -*-
# vi: set ft=ruby :
hosted_zone "examples.com." do
rrset "examples.com.", "A" do
dns_name "xxxxxxxxxxxx.ap-northeast-1.elb.amazonaws.com."
end
# examples.com のAレコードにAliasとして”xxxxxxxxxxxx.ap-northeast-1.elb.amazonaws.com.”を追加
rrset "examples.com.", "MX" do
ttl 300
resource_records(
"100 mx.examples.com"
)
end
# MXレコードの設定
rrset "mx.examples.com.", "A" do
ttl 300
resource_records(
"192.168.0.1"
)
end
# Aレコードの設定
rrset "www.examples.com.", "A" do
ttl 300
resource_records(
"192.168.0.1"
)
end
# Aレコードの設定
end
実行
www.examples.com
とmx.examples.com
のAコードを
192.168.0.1
から192.168.0.2
へと変更してみました。
- Routefile自体の編集は手動で行います。
ドライラン
$ roadwork -a --dry-run -f Routefile
Apply `Routefile` to Route53 (dry-run)
Update ResourceRecordSet: mx.examples.com. A (dry-run)
resource_records:
-[{:value=>"192.168.0.1"}]
+[{:value=>"192.168.0.2"}] (dry-run)
Update ResourceRecordSet: www.examples.com. A (dry-run)
resource_records:
-[{:value=>"192.168.0.1"}]
+[{:value=>"192.168.0.2"}] (dry-run)
No change
- 上記の様に変更箇所が明示的に表示されます(この時点でドライランです)
適用
$ roadwork -a -f Routefile
Apply `Routefile` to Route53
Update ResourceRecordSet: mx.examples.com. A
resource_records:
-[{:value=>"192.168.0.1"}]
+[{:value=>"192.168.0.2"}]
Update ResourceRecordSet: www.examples.com. A
resource_records:
-[{:value=>"192.168.0.1"}]
+[{:value=>"192.168.0.2"}]
まとめ
上記の様にコマンドライン上でRoute53の変更箇所を明示的に表示てでき、適用が可能です。
さらにRoutefile自体をGit管理することで、ファイル履歴の取得も可能となります。
ぜひご活用ください。