Chefのレシピで
/etc/httpd/conf.d/userdir.conf
が存在する場合のみ、ファイル中の文字を全てコメントアウトしたい。
というレシピを作成する場合の話し。
このファイルはApache2.4系から追加されたようで、2.2系が入っているサーバーでChefを動かすと
そんなファイル無いぞとエラーになってしまいます。
ので以下のようにファイルの有無を見てコマンドが実行されるようにしてみました。
「not_if」「only_if」の動作のおさらい
not_if | 条件が真でない場合コマンドを実行する |
---|---|
only_if | 条件が真の場合コマンドを実行する |
今回の例に置き換える
not_if | 既にファイルが存在している場合コマンドを実行しない |
---|---|
only_if | 既にファイルが存在している場合コマンドを実行する |
今回の例では
ファイルが存在している場合、ファイル内を全てコメントアウトしたい(レシピを適用したい)ので
only_ifのほうが合っています。
実際のレシピ
ファイルが存在する場合のみコメントアウトするように書いてみました。
bash "comment out userdir" do only_if { File.exists?("/etc/httpd/conf.d/userdir.conf") } code <<-EOC sed -i "s/^#*/#/g" /etc/httpd/conf.d/userdir.conf EOC end