1.compiling
2.converging
と進みcompiling時にresource外のrubyスクリプトが実行され、converging時にresourceのactionが実行される
これだとresourceでファイルを作成し、そのファイルに対してrubyスクリプトで何か処理を加えるみたいな場合にrubyスクリプト実行時にはまだファイルは生成されておらずエラーになってしまう
そこでhttp://docs.opscode.com/resource_common_compile.htmlによれば
r=file "/tmp/hoge" do action :nothing end r.run_action(:create) puts File.exists?("/tmp/hoge")みたいな感じにするとcompile時にresourceのactionを実行できるようだ
次のようなrecipeを作成して実行してみた
ruby_block "run 3rd" do block do puts "run 3rd" end action :create end r=ruby_block "run 2nd" do block do puts "run 2nd" end action :nothing end puts "run 1st" r.run_action(:create)
実行結果はこのような感じ
# chef-client Starting Chef Client, version 11.4.2 [2013-06-25T17:25:32+09:00] WARN: unable to detect ip6address resolving cookbooks for run list: ["test"] Synchronizing Cookbooks: - test Compiling Cookbooks... run 1st Recipe: test::default * ruby_block[run 2nd] action createrun 2nd - execute the ruby block run 2nd Converging 2 resources * ruby_block[run 3rd] action createrun 3rd - execute the ruby block run 3rd * ruby_block[run 2nd] action nothing (up to date) Chef Client finished, 2 resources updated
0 件のコメント:
コメントを投稿