こないだからちょいと使い始めた Chef。最小限のやりたいことは記述できたかなと思って、そのまま本番稼働させる予定の仮想サーバ上でレシピを実行したら、レシピとは違う部分で失敗。
その部分を解消し、もう一度実行したら、今度はレシピ内の一箇所でエラーが出た。
なんだろー?と思ってエラーログを見てみたら、あるプラグインのインストールでコケていた。エラーメッセージ的には「もうそのプラグインはインストールされてるぜ?」というもの。
このプラグインは、apt などのパッケージでインストールする形式ではなく、これを利用するソフトウェア独自のコマンドでインストールするもの。そのインストール用のコマンドが先ほどのエラーをはいていた。
つまり、同じレシピを何度でも繰り返し実行できるようにしておくべきという Chef の思想に反していたのであった。
結局、プラグインのインストール先ディレクトリを探して、そこのファイルの有無を確認の上、インストールするかどうかを切り分ける処理を作成した。
これでとりあえずの冪等性を担保したのだけど、いま考えると、このままだとパッケージアップデートのときとかうまくいかないのではないかな。。。
美しいレシピを書けるようになるには、まだまだ修行が必要そうだ。