chef-solo でコマンドを実行したいとき

chef-solo を使って ntpd をインストール | hiro345」で紹介をしましたが、サーバのセットアップで chef-solo を使うと何かと便利です。日々のサーバセットアップについて、その場でやっていた作業が記録として残しやすく、同じ環境を再構築するのに使えるからです。もちろん、若干面倒なところもありますが、ステージングサーバで試しにセットアップしてから、本番サーバで同じ環境を構築するといったときに最大の威力を発揮します。

ところで、chef-solo でコマンドを実行したいときがあります。たとえば、SELinuxを使っていて「setsebool -P httpd_enable_cgi on」のようなコマンドを実行したいときです。そんなときは下記のようにできます。not_if と組み合わせると、すでに有効だったらスキップするといったこともできます。cookbooks/selinux/recipes/default.rb とかに記述します。

execute "enable httpd_enable_cgi" do
  not_if "getsebool httpd_enable_cgi | awk {'print $3'} | egrep -qx 'on'"
  command "setsebool -P httpd_enable_cgi on"
  action :run
end

Linux, SELinuxなどについて理解するには下記の参考書が役に立ちます。

同じタグの記事: Chef
同じタグの記事: chef-solo
同じタグの記事: Linux
同じタグの記事: SELinux
同じカテゴリの記事: Linux