Mitamaeでdotfilesの管理をするようにした。
Mitamaeとは
プロビジョニングツールのitameのmruby実装である。mruby実装にすることで何がうれしいかというとシングルバイナリとして動作するので、Ruby や gem に依存しなくなるというのがある。Mitamaeのバイナリがあれば動くので、curlで引っ張ってきてシュッと使うことができる。ちなみに読みは「見たまえ」ではなく「えむいたまえ」らしい。
これを使うと環境構築のための環境構築の手間を最小限にできる。 dotfilesのデプロイには今までシェルスクリプトを使っていたが、mitamaeを使うほうが便利であった。
構成
ぼくのdotfilesはtkmru/dotfilesで、k0kubun/dotfilesとakito19/dotfiles をかなり参考にしている。
$ tree -aL 2
.
├── .git
│ ...
├── .gitignore
├── README.md
├── bin
│ └── setup_mitamae.sh
├── config
│ ├── .bash_aliases
│ ├── .bash_profile
│ ├── .bashrc
│ ├── .gdbinit
│ ├── .gitconfig
│ ├── .profile
│ ├── .tmux.conf
│ └── .vimrc
├── cookbooks
│ ├── gdb
│ ├── git
│ ├── symboliclinks
│ ├── tmux
│ └── vim
├── deploy.sh
├── init.sh
├── lib
│ └── bootstrap.rb
└── roles
├── darwin
└── ubuntu
最初に実行するのはinit.shで、Mitamaeをcurlでダウンロードする。OSがmacだった場合、Xcode Command Line Toolsのインストールやhomebrewのインストールもここで行う。そして最後に、ホームディレクトリからdotfilesへのシンボリックリンクを張るdeploy.shを実行している。deploy.shはMitamaeを用いてlib/bootstrap.rbを実行し、roles.rbからcookbook以下のレシピを実行することでシンボリックリンクを張っている。 また、OSごとに使うdotfilesが違う(ubuntuの.profileとか)ので、deploy.sh内でunameを使ってOSを判定し、roles以下で異なる処理をさせている。