Mitamaeでdotfilesの管理をやるようにした

Mitamaeでdotfilesの管理をするようにした。

Mitamaeとは

プロビジョニングツールのitameのmruby実装である。mruby実装にすることで何がうれしいかというとシングルバイナリとして動作するので、Ruby や gem に依存しなくなるというのがある。Mitamaeのバイナリがあれば動くので、curlで引っ張ってきてシュッと使うことができる。ちなみに読みは「見たまえ」ではなく「えむいたまえ」らしい。

k0kubun.hatenablog.com

これを使うと環境構築のための環境構築の手間を最小限にできる。 dotfilesのデプロイには今までシェルスクリプトを使っていたが、mitamaeを使うほうが便利であった。

構成

ぼくのdotfilesはtkmru/dotfilesで、k0kubun/dotfilesakito19/dotfiles をかなり参考にしている。

github.com

$ 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以下で異なる処理をさせている。

参考資料