[Serverspec] chef テストが捗る 2つの tips

Pocket

捗るのかどうかはゴメンなさい、知りません。取りあえず、ネコでごまかします。可愛すぎる。猫飼いたい。


HIR86 shitawomuiteruosuneko20140419500

我が家の大半が猫アレルギーで、嫁に至っては、人間以外の毛が生えている生物がいるだけでアレルギーなので、ハムスターすら飼えません。助けてください。魚も好きだけど、ハムスターも飼いたかったんです。「ハムスター飼う」って言ったら「二度と貴方には近寄らない」という過程の危機が待っていたので、ハムスターは東急ハンズで眺めるだけにしています。

nfs ディレクトリがマウントされてるかどうか

フツーに考えて、指定したディレクトリが nfs でマウントされているかどうかは次ので分かります。

1
2
3
describe file('/home') do
  it { should be_mounted.with( :type => 'nfs' ) }
end

が、この nfs vers=2,3 と vers=4 で区別されると言うことに最近気がつきました(‘A`)

このケースだと、nfs vers=2,3 の場合のみです。vers=4 の時は次のようにしないとダメそうです。試してないけど、多分そうです。

1
2
3
describe file('/home') do
  it { should be_mounted.with( :type => 'nfs4' ) }
end

この違いが分かった貴方は成長できます。

一通り、最後までテストを実行して欲しい

なにも考えずに、Jenkinsserverspec のテスト結果を ci_reporter なんかから引っかけてきている人や、ちまちま rake serverspec:hostname1 serverspec:hostname2 serverspec:hostname3 とホストを指定したり、rake spec で一気にやっている人など、十人十色と思いますが、エラーが発生すると対象のホストまで実行して終了です。一つ一つホストを指定してやっているときはいいんですけど、対象のホストを全部テストして欲しいなー、なんて時もあろうかと思います。んで、そのうち何件エラーがあるの? ん? みたいな感じに。

それにはこれですババーン

Serverspecで複数ホストのテストをする時、途中でfailしても、最後までspecを実行させる。 – Qiita

まんまですね、ServerspecRakefile を次のように 1行追加してあげます。remark してるから 2行追加してるけど。

1
2
3
4
5
6
7
8
9
10
11
12
13
namespace :serverspec do
  task :all => properties.keys.map {|key| 'serverspec:' + key.split('.')[0] }
  properties.keys.each do |key|
    desc "Run serverspec to #{key}"
    RSpec::Core::RakeTask.new(key.split('.')[0].to_sym) do |t|
      ENV['TARGET_HOST'] = key
      t.pattern = 'spec/{' + properties[key][:roles].join(',') + '}/*_spec.rb'
 
      # 途中でfailしてもspec実行を続ける
      t.fail_on_error = false
    end
  end
end

どこよ!!! って言う人にはこちらを差し上げます。


グズは嫌いだよ

そうですね

1
t.fail_on_error = false

を追加すれば良いだけです。こうすることで


テスト数がおかしい

こんな風に、途中で Serverspec でエラーが発生してしまったがために、実行件数自体が激減して、「結局いくつエラーが発生したんだい!!!」みたいな事例を避けることができます。
その代わり、エラー発生しまくったら切ないことになるコトまちがいないです。がんばれ。

“[Serverspec] chef テストが捗る 2つの tips” への1件の返信

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください