2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

why-run 時に execute リソースのコマンドを実行する whyrun_safe_execute

Last updated at Posted at 2015-02-07

深遠な理由があって、why-run の時も execute リソースのコマンドを実行したい。

Convergence フェーズで実行したいので shell_out! ではダメ。

コード

ちょっとしたトリックではできなさそうだったので、自分で書いてみた。

whyrun_safe_ruby_block リソース を参考にしている。

おためし実行

これで、こんなレシピを書いて

recipes/test.rb
whyrun_safe_execute "foo" do
  command "ls /tmp"
end
$ chef-solo -c solo.rb -o {cookbook}::test -l info
$ chef-solo -c solo.rb -o {cookbook}::test --why-run -l info

として実行すると why-run 時にも ls /tmp されることが確認できるはず。

さらに if Chef::Config[:why_run] とかすると why-run 時にだけ実行する謎リソースとかも実現できる。

recipes/test.rb
if Chef::Config[:why_run]
  whyrun_safe_execute "foo" do
    command "ls /tmp"
  end
end

おわりに

cookbook レポジトリとして作ってあるので、Berkshelf かなにかで cookbook として取り込めばご利用いただける https://github.com/sonots/chef-resource-whyrun_safe_execute

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?