物理サーバーと仮想サーバーを両方扱っている場合、
物理サーバーにのみインストールしたいパッケージや起動したいデーモンが出てきます。
例えばmcelogというメモリにエラーがあった時にログ出力してくれるデーモンがあるのですが、
物理サーバー(ハイパーバイザーなど)にのみインストールされていればいいので、
これを自動判断して
- 物理サーバーならインストール
- 仮想サーバーならインストールしない
というChefのレシピを作成してみました。
レシピ
package 'mcelog' do action :install not_if { node['dmi']['system']['product_name'] == 'KVM' } end service 'mcelogd' do action [:enable, :start] not_if { node['dmi']['system']['product_name'] == 'KVM' } end
※この例では仮想サーバーはKVMを利用している前提です。
ohai変数からproduct_nameを取得しています。
これでproduct_nameがKVM以外の場合はパッケージインストールとデーモン起動が行われます。
物理サーバーの場合、KVMではなく機種名が表示されます。
なので物理サーバーにはこのレシピが適用されるようになります。