Itamaeのeditアクションが便利
chefでもやろうと思えばできるんだとは思うが、少なくとも自分はここまで簡潔に書ける方法を知らなかったし、非常に便利だと感じたので書く。
itamaeのファイル系リソース(file
・remote_file
・template
)では、action
アトリビュートに:edit
という値を指定できる。
これを使うとblock
アトリビュートに指定したブロックを実行し、ファイルの内容を編集することができる。
使い方
file "/foo" do
action :edit
block do |content|
content.gsub!("world", "Itamae")
end
end
content
に対して破壊的な変更を下すことで、ファイルの内容が置き換わる。
ブロックの戻り値がファイルの内容に置き換わっても良いのでは、とも思ったが作者の思想的にはこれがベストなんだろうか。
おわりに
itamaeはchefと比べて、学習コストを割くことなく、さくっと環境構築フローをコードに落とし込めるDSL兼ツールという認識でいる。
chefはちょっとヘビーで…という人にはまさに最適なプロヴィジョニングツールになる気がする。
また、構築された環境に対するテストツールとして有名なserverspecも、itamaeと同様に基盤はspecinfraによって作られているので、itamaeとの親和性がものすごく高い印象を受けた。
itamaeで環境構築フローをコードに落とし込んで自動化し、Serverspecでテストを書くというのが自分の中では鉄板化していくと思う。