named_spec.rb を書いてみたら、直後にbe_resolvable.byが実装されてた。
serverspecでDNSサーバの設定をチェックするnamed_spec.rbを書いてみた。
ら、直後にbe_resolvable.byが実装されてたので書き換えた。
テスト項目はこんな感じ。
- bindパッケージのインストール
- named自動起動設定
- named起動してるか
- 53, 953ポートをlistenしてるか
- 設定ファイルの文法チェック
自身にdigで問い合わせて期待した結果が返ってくるか- be_resolvable.byを使う
- localhostにnslookupで問い合わせて結果で判定する
コードはこちら。
require 'spec_helper' describe 'bind' do it { should be_installed } end describe 'named' do it { should be_enabled } it { should be_running } end describe 'port 53' do it { should be_listening } end describe 'port 953' do it { should be_listening } end describe 'named-checkconf /etc/named.conf' do it { should return_exit_status 0 } end describe 'resolv' do context 'topecongiro.com' do it { should be_resolvable.by('dns') } end context '-type=mx topecongiro.com' do it { should be_resolvable.by('dns') } end end
digの結果をgrepで絞ってるのが美しくない感じです。
be_resolvable.byのおかげで美しくなりました。
使う前のコードはこれ。
describe 'dig @127.0.0.1 topecongiro.com | grep -A1 "ANSWER SECTION:" | tail -n1' do it { should return_stdout 'topecongiro.com. 86400 IN A 49.212.173.211' } end describe 'dig @127.0.0.1 topecongiro.com | grep -A1 "AUTHORITY SECTION:" | tail -n1' do it { should return_stdout 'topecongiro.com. 86400 IN NS ns1.topecongiro.com.' } end describe 'dig MX @127.0.0.1 topecongiro.com | grep -A1 "ANSWER SECTION:" | tail -n1' do it { should return_stdout 'topecongiro.com. 86400 IN MX 10 topecongiro.com.' } end
引いたIPまでチェックするならこっちだけど、そこまでテストする必要があるのかはアレ(判断できない)だ。