Ansibleで構築するMac OS X開発環境


アプリケーションの開発環境を Ansible でつくる - Hatena Developer Blog

を見て、自分もAnsibleでOS Xの環境を立ち上げている途中であることを思い出した。


samurai20000/OSX-bootstrap · GitHub

Yosemiteにupdateする少し前、ふとbrew bundleした際にwarningが出て、Brewfileが終わりそうなことを知った。シェルスクリプトで書きなおすことも考えたが、ソフトウェアのインストールだけではなく設定も自動で行いたい。Yosemiteにupdateする際にクリーンインストールして、Ansibleで一から構築し直すことにした。Ansibleを選んだのは、シンプルだったから。chef、puppetは使ったことがないので比較はできない。

使い方

OSX-bootstrap/README.md at master · samurai20000/OSX-bootstrap · GitHub
参照。とはいっても、直接実行するのはあまりおすすめできない。設定上書きしているところがあるので環境を壊す可能性がある。

ソフトウェアのインストール

roles/homebrew, roles/homebrew-cask
使い慣れてるhomebrewを使った。pecoとghqも使いたかったので、tapしている。

zsh configuration

roles/oh-my-zsh
今まで育てた.zshrcを捨てて.oh-my-zshのデフォルト設定で出来る限りやることにした。
個別の設定はoh-my-zshの流儀に従って、.oh-my-zsh/custom/*に配置した。

Emacs

roles/emacs
Caskでパッケージ管理を行った。Ansibleのtemplate機能を使ってCaskファイルの作成をスマートに。

{% for package in packages %}
(depends-on "{{ package }}")
{% endfor %}

このように書いておいて、emacsvars/main.ymlのpackagesにpackageをつらつらと並べておけば展開してくれる。configurationは今まで使っていたものをコピーするように設定。

設定ファイルが多すぎるのと、linux/windows等別OSで動かすことも考えるとこの設定は別レポジトリにしたほうが良い気がしている。

Karabiner

roles/karabiner
過去にKeyRemap4MacBookと呼ばれていた多分みんな使っているソフトウェア。Karabinerはコマンドラインインターフェースがあって、xmlの設定ファイルを読み込ませることができる。
設定ファイルはhttps://pqrs.org/osx/karabiner/document.html.ja#preferences
コマンドラインインターフェースはhttps://pqrs.org/osx/karabiner/document.html.ja#commandlineinterfaceに書いてある。
前環境から設定ファイルを取ってきて、コマンドで反映させた。

課題

Ansibleの機能を把握しきれていないところがあって、実行するたびに必要のない処理まで実行させてしまっている部分がある。ただ、たかがOSの設定なのでちょっとぐらい時間かかってもOKとすることもできる。

Ansibleについて

Officialのドキュメントが良くできていて大体の問題を解決してくれた。Dashでも読めるので入れておくと良いと思う。学習コストもそこまで高くは感じなかった。あとハマったところはStackoverflowとQiitaが助けてくれた。