ServerspecでOS種別に応じてテストを実行する

Dec 17, 2014   #serverspec  :

テスト対象のサーバーでohaiが導入されていることが前提ですが、以下のようにして実現できましたのでメモ:

require 'serverspec'
require 'json'

set :backend,  :exec

# Ubuntu 12.04 only.
# Check whether `Rabbitmq` allows ssl poodle attack:

platform_version = JSON.load(`ohai`)['platform_version']

if platform_version == "12.04"
  describe file('/etc/rabbitmq/rabbitmq.config') do
    its(:content) { should match /ssl_allow_poodle_attack/ }
  end
end

ohaiChefを導入している環境であれば、まず間違いなく利用できるはず。パスも通っているはずです。


[2014/12/20追記]

mizzyさんのコメントにある通り、serverspecが提供するハッシュを利用して同じことが出来ました。このような感じです:

require 'serverspec'

set :backend, :exec

# Ubuntu 12.04 only.
# Check whether `Rabbitmq` allows ssl poodle attack:

if os[:release] == '12.04' and os[:family] == 'ubuntu'
  describe file('/etc/rabbitmq/rabbitmq.config') do
    its(:content) { should match /ssl_allow_poodle_attack/ }
  end
end

Chef実践入門 ~コードによるインフラ構成の自動化 (WEB+DB PRESS plus)
吉羽 龍太郎 安藤 祐介 伊藤 直也 菅井 祐太朗 並河 祐貴
技術評論社
売り上げランキング: 30,889