ローカル環境構築を MItamae で自動化した話
イントロ
お仕事用 Mac が Mac book pro に変わってしまった。
環境構築をやるのも久々だったのだけれども、dotfiles のボリュームが増えたのと、実はコード化出来ていない部分が多かったりして、かなり面倒だった。
ちゃんともう一度やり直そう、と思って選んだのが MItamae
ansible
は活用例が多いっぽいけど、yaml
だと表現力が気になる(食わず嫌い)Itamae
は良さそうだけど、gem をインストールすることで、環境汚すのはちょっと嫌だ。ruby に依存するし。- となると
chef
も同様 puppet
は思った以上にデカかったboxen
はへんじをしない。ただのしかばねのようだgo
で環境構築したら、Mac 以外の環境構築も楽になるのでは説を思いつくitamae-go
を発見- そういえば
mruby
のItamae
ってなかったっけ - Itamaeのmruby実装「MItamae」が大体いい感じになった話 - k0kubun’s blog を発見
MItamae
にしてみるか
みたいな流れで行き着きました。
今まではどうしていたか
rake
で色々やってた。
自前で rake task を定義していて、rake コマンド叩くことで各種 dotfile
の配置が完了する。
shell よりは書きやすいと思ったのと、ruby の勉強のために rake を使っていた、という経緯がある。
実際にやってみてどうだったか
mruby がほんの僅かに理解できた
結論から言うと MItamae
を使うだけなら、mruby の学習自体は殆ど要らなかった。
ただし mruby
でいう gem の取扱いは、CRuby と全然違うので、ここを知らないと大分混乱する。
mruby と mgem と rbenv と - Qiita
MItamae の install は簡単
Mitamae のバイナリが github で配布されているので、curl でダウンロードでおk。
ここが mruby のすごいところで、CRuby とは違う点。
今までは gem を install する時には、ruby を入れて、gem install
コマンドを実行していたけど、mruby の gem は、gem 自体それぞれ binary になっているようだ。
(正しい表現かはわからない)
ディレクトリ構成は chef っぽく落ち着く
シンプルな Chef なので、書き方は自由。
だが、試行錯誤していくうちに、結局 Chef みたいな構成に落ち着いていった。
Itamae
のwiki にも(Chef みたいな構成とは書いてないが)ベストプラクティスが載っている。
Best Practice · itamae-kitchen/itamae Wiki
レシピの実行順序は ruby で担保する
chef で言う run_list
的なやつは MItamae
には存在しないっぽい。
どうやるのが良いかわかってないが、今のところ mitamae local xxx.rb
コマンドで渡す ruby のコードの中で、include_recipe
を順番に並べて管理している。
MItamae で使っている gem を見る
mitamae の DSL の中で、どの程度自由にやれるのかというと、以下のファイルを見れば良いっぽい。
mitamae/mrbgem.rake at master · k0kubun/mitamae
add_dependency
に追加されている gem は使える。
DSL の中からやりたいこと、という意味では大体揃っている。
結果
dotfile
がすごいすっきりした。嬉しい。
.emacs.d
とか .bundle
等の実体は cookbooks
の中に押し込んでいる。
おわり
k0kubun/dotfiles: Configuration management of development environment がよく出来すぎていて、大体まねっこになってしまった。
MItamae
も mruby
もすごい便利です。