もともとchef serverのよる構成管理を行っていたが、よりシンプルな仕組みにしたかったのでansibleに移行した。ansibleは処理も軽く、コードも構成もシンプルで気に入っていたのだが、難しい処理を扱い始めてくると表現力に物足りなさを感じてしまった。具体的には、素のpythonを書けないことのストレスと、pythonでの構造体操作がperlやrubyに比べるとやりづらいという点。その手間も相まって、Jinja2でのtemplate定義に悩むことが多かった。
構成管理ツールでは、ohaiで取得するような複雑な構造体からデータを取り出して、レシピの中で扱うことになる。pythonの場合、複雑な構造体からデータを取り出しづらいため、Jinja2の中でもif文やloop文を駆使して取り出すことになる。それに加えて変数スコープが厳密なため、更に手間がかかってしまう。こういうことを繰り返していると徐々にansibleの魅力が薄れていき、rubyでさくさく書けるchefに気持ちが戻ってきてしまった。chefは、rubyによる構造体の操作もやりやすいし、業務で使うことも多いし。
an