Ruby
itamae

Itamaeのeditアクションが便利

More than 1 year has passed since last update.

Itamaeのeditアクションが便利

chefでもやろうと思えばできるんだとは思うが、少なくとも自分はここまで簡潔に書ける方法を知らなかったし、非常に便利だと感じたので書く。

itamaeのファイル系リソース(fileremote_filetemplate)では、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でテストを書くというのが自分の中では鉄板化していくと思う。