うまいぼうぶろぐ

linuxとhttpdとperlのメモ

serverspec でサーバの設定状況をテスト

# gem install rake
# gem install serverspec	

使ってみた。

rspecを使って、サーバのファイル、ファイルの中身、listenしているportや、起動スクリプト(chkconfig の状況など)をテストできるブツ。ぱっと使って見たけど簡単で良さそうですね。

ちなみにperlのTest::System::Config を使っても似たようなことできるかも。

謎 (解決済み)

ruby力なさすぎて、file のcontainがよくわからない。単純な文字列と比較する場合はOKだけど。。。
ここで/hogehoge/ のような正規表現は使えない?(設定ファイル中のスペースの数を無視したいので)

describe file('/etc/nginx/nginx.conf') do
  it { should be_file }
  it { should contain 'user nginx;'  }
end	


とりあえずcommandでcatしてreturn_stdoutで正規表現使ったらいけたけど、たぶんこんなことしなくても良いはず!

describe command('cat /etc/nginx/nginx.conf') do
  it { should return_stdout /user\s+nginx;/ }
end	
解決

ということなので例えばnginxのユーザの設定値'user nginx;' の空白の数を無視(1つ以上の空白があれば良い) したい場合は

describe file('/etc/nginx/nginx.conf') do
  it { should be_file }
  it { should contain 'user \+nginx;'  }
end	

とやれば良いですね。素敵。