Chef-testing-cookbooks

提供:Dev Guides
移動先:案内検索

シェフ-クックブックのテスト

クックブックが直接デプロイされ、実稼働サーバーで実行される場合、クックブックが実稼働で分割される可能性が高くなります。 これを防ぐ最善の方法は、セットアップ環境でクックブックをテストすることです。

テストの手順は次のとおりです。

  • ステップ1 *-次のコマンドを使用してクックブックをインストールします。
vipin@laptop:~/chef-repo $ knife cookbook site install <cookbook name>
  • ステップ2 *-動作しているクックブックでナイフクックブックテストコマンドを実行します。
vipin@laptop:~/chef-repo $ knife cookbook test VTest
checking ntp
Running syntax check on ntp
Validating ruby files
Validating templates
  • ステップ3 *-クックブックで何かを壊して、もう一度テストします。
vipin@laptop:~/chef-repo $ subl cookbooks/VTest/recipes/default.rb
...
[ node['ntp']['varlibdir']
node['ntp']['statsdir'] ].each do |ntpdir|
   directory ntpdir do
      owner node['ntp']['var_owner']
      group node['ntp']['var_group']
      mode 0755
   end
end
  • ステップ4 *-ナイフテストコマンドを再度実行します。
vipin@laptop:~/chef-repo $ knife cookbook test ntp
checking ntp
Running syntax check on ntp
Validating ruby files
FATAL: Cookbook file recipes/default.rb has a ruby syntax error:
FATAL: cookbooks/ntp/recipes/default.rb:25: syntax error,
unexpected tIDENTIFIER, expecting ']'
FATAL: node['ntp']['statsdir'] ].each do |ntpdir|
FATAL: ^
FATAL: cookbooks/ntp/recipes/default.rb:25: syntax error,
unexpected ']', expecting $end
FATAL: node['ntp']['statsdir'] ].each do |ntpdir|
FATAL:

作業方法

ナイフクックブックテストは、クックブック内のすべてのRubyファイルとすべてのERBテンプレートに対してRuby構文チェックを実行します。 Rubyファイルをループし、それぞれに対してRuby –c を実行します。 Ruby –c はスクリプトの構文をチェックし、実行せずに終了します。

すべてのRubyファイルを調べた後、knife cookbookテストはすべてのERBテンプレートとパイプを調べます。これは、 – x によってRuby –c によって作成された冗長バージョンです。

制限事項

ナイフクックブックテストでは、RubyファイルとERBテンプレートの単純な構文チェックのみを行います。 ChefSpecとテストキッチンを使用して、完全にテストドリブンを進めることができます。