blog/content/post/2014-12-17-testing-based-on...

4.0 KiB

title author date url wordtwit_posted_tweets wordtwit_post_info tmac_last_id categories
ServerspecでOS種別に応じてテストを実行する kazu634 2014-12-17 /2014/12/17/testing-based-on-os-type-using-serverspec/
a:1:{i:0;i:5561;}
O:8:"stdClass":13:{s:6:"manual";b:1;s:11:"tweet_times";i:1;s:5:"delay";s:1:"0";s:7:"enabled";s:1:"1";s:10:"separation";i:60;s:7:"version";s:3:"3.7";s:14:"tweet_template";s:114:"ブログに新しい記事を投稿したよ: ServerspecでOS種別に応じてテストを実行する - [link] ";s:6:"status";i:2;s:6:"result";a:0:{}s:13:"tweet_counter";i:2;s:13:"tweet_log_ids";a:1:{i:0;i:5561;}s:9:"hash_tags";a:0:{}s:8:"accounts";a:1:{i:0;s:7:"kazu634";}}
561519535103434752
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