Prev / Next

2013-04-14 / serverspec にいくつかの matcher を merge してもらった

serverspec を Solaris に対応([2013-03-25-1])させてから、
いくつかの matcher を書いて merge してもらったのでメモ。

merge してもらったのは以下の 4 つ。
- be_zfs
- have_svcprop / have_svcprops
- have_ipfilter_rule
- have_ipnat_rule


be_zfs

zfs の存在確認と、property の確認を行なえる matcher。

使用例

describe 'rpool' do
  # rpool が存在するか確認
  it { should be_zfs }

  it do
    # rpool のプロパティの値を確認
    should be_zfs.with({
      'mountpoint'  => '/rpool',
      'compression' => 'on',
    })
  end
end


have_svcprop / have_svcprops

svcprop でプロパティの値を確認する matcher。

have_svcprop と have_svcprops は確認するプロパティの渡し方の違い。

使用例

describe 'svc:/network/http:apache22' do
  # Single property
  it { should have_svcprop('httpd/enable_64bit').with_value('false') }

  # Multiple properties
  it do
    should have_svcprops(
      'httpd/enable_64bit' => 'false',
      'httpd/server_type'  => 'worker',
    )
  end
end


have_svcprops は書きやすいけど、
テストに失敗したとき、どのプロパティの値がおかしいのかわからないので、
そのあたりが問題として残ってる。

have_ipfilter_rule

ipfstat -io の出力に指定したルールが含まれているか確認する。

使用例

describe 'ipfilter' do
  it { should have_ipfilter_rule('pass in quick on net0 proto tcp from any to any port = 80 keep state') }
end


合わせて、contain matcher で /etc/ipf/ipf.conf などにルールが書かれているか
チェックすると、設定を書いていないのか、反映されていないのかわかってよいかもしれない。

have_ipnat_rule

ipnat -l の出力に指定したルールが含まれているか確認する。

使用例

describe 'ipnat' do
  it { should have_ipnat_rule('map net1 10.12.0.0/24 -> 0.0.0.0/32 portmap tcp/udp auto') }
  it { should have_ipnat_rule('map net1 10.12.0.0/24 -> 0.0.0.0/32') }
end


have_ipfilter_rule と同様。

comments powered by Disqus