awspecを活用して、AWS Route53でのサブドメイン追加業務を堅実に実施する
よくあるサブドメイン追加業務を、awspecを利用して堅実に実施してみます。
1. 修正前のRoute53 Hosted Zoneの状態をawspecでspecファイル化
まずawspecの環境を作ります。awspecで利用するIAMのポリシーは必ずリードオンリー権限のみにしてください。
$ mkdir awspec
$ cd awspec/
$ awspec init
+ spec/
+ spec/spec_helper.rb
+ Rakefile
+ spec/.gitignore
+ .rspec
$ cat <<EOF > spec/secrets.yml
region: ap-northeast-1
aws_access_key_id: XXXXXXXXXXXXXXXXXXXX
aws_secret_access_key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
EOF
Hosted Zoneの状態をawspec generate route53_hosted_zone
コマンドを使ってspecファイル化します。
$ echo "require 'spec_helper'" > spec/route53_spec.rb
$ awspec generate route53_hosted_zone example.com. >> spec/route53_spec.rb
生成されたspecはこんな感じ
describe route53_hosted_zone('example.com.') do
it { should exist }
its(:resource_record_set_count) { should eq 4 }
it { should have_record_set('example.com.').a('203.0.113.1').ttl(3600) }
it { should have_record_set('example.com.').mx('10 mail.example.com').ttl(3600) }
it { should have_record_set('mail.example.com.').a('203.0.113.1').ttl(3600) }
it { should have_record_set('example.com.').ns('ns-123.awsdns-45.net.
ns-6789.awsdns-01.org.
ns-2345.awsdns-67.co.uk.
ns-890.awsdns-12.com.').ttl(172800) }
end
これで現状のRoute53 Hosted Zoneのspecファイルが生成されました。
実際にrake spec
を実行してみます。
$ rake spec
...
Finished in 1.55 seconds (files took 0.66 seconds to load)
6 examples, 0 failures
グリーンになることを確認しました。
2. 今回追加するサブドメインのレコードをspecに追記
今回はdev.example.com
のAレコード (203.0.113.3) を追加します。
describe route53_hosted_zone('example.com.') do
it { should exist }
its(:resource_record_set_count) { should eq 4 }
it { should have_record_set('example.com.').a('203.0.113.1').ttl(3600) }
it { should have_record_set('example.com.').mx('10 mail.example.com').ttl(3600) }
it { should have_record_set('mail.example.com.').a('203.0.113.1').ttl(3600) }
it { should have_record_set('example.com.').ns('ns-123.awsdns-45.net.
ns-6789.awsdns-01.org.
ns-2345.awsdns-67.co.uk.
ns-890.awsdns-12.com.').ttl(172800) }
it { should have_record_set('dev.example.com.').a('203.0.113.3').ttl(3600) } # 開発環境用のために追加
end
コメントが書けるのが意外に便利だったりします。
rake spec
を実行してレッドになることを確認します。
3. マネジメントコンソールなどでHosted Zoneの修正を実施
手動。。。
手動では実施せず、 roadwalker などを使うとカッコいいと思います。
4. チェック
修正後、rake spec
を実行してグリーンになることを確認します。
DNSの変更確認に Infrataster::Plugin::Dns を併用するのもカッコいいと思います。
終わり!
その他
なんか前に同じようなエントリーを書いたような。。。