はじめに
- 業務でも cookbook を書く機会が減ってしまった
- 目指せ、脱初心者
not_if と only_if の使い方
execute
リソースでよく使う not_if
と only_if
について復習してみる。
not_if 従来
execute "create file hoge" do command "touch /tmp/hoge" not_if (ls /tmp/hoge) end
一応、これでも動く。
not_if こう書いた方がカッコイイと思う(自分比)
execute "create file hoge" do command "touch /tmp/hoge" not_if {File.exists?("/tmp/hoge")} end
上記のように書いた方がなんとなくカッコイイ。
only_if
only_if はあまり使ったことはないけど、以下のような感じかな。
template "/tmp/hoge" do mode 00644 source "hoge.erb" only_if "test -f /tmp/ahoaho" end
/tmp/ahoaho
が存在していたら template リソースを使って /tmp/hoge
を作成する。
そして not_if と only_if を整理
condition | 意味 |
---|---|
not_if | 否定(〜が〜でなければ) |
only_if | 肯定(〜が〜であれば) |
nothing からの notifies
パッケージをインストール後、設定ファイルを設置したい場合....
package "httpd" do action :install end template "/etc/httpd/conf.d/common.conf" do source "httpd_common.conf.erb" mode 00644 owner "root" group "root" end
個人的には悪くはないと思うけど、上記のように書くと毎回実行されてしまうので nothing
と notifies
を使う。
template "/etc/httpd/conf.d/common.conf" do source "httpd_common.conf.erb" mode 00644 owner "root" group "root" action :nothing end package "httpd" do action :install notifies :create, resources( :template => "/etc/httpd/conf.d/common.conf" ) end
参考
続く...