github boxen使ってみてハマったところ
もうすっかりDBを触る機会が減って、最近はソシャゲの開発なんぞをやってます。
で、先日開発機のmacが来ました。 よく考えたらここ半年で4台目のセットアップだなーとか思ったので、前から気になってたboxenを使ってみました。
boxenってなんぞ
macのセットアップを自動化できます。 例えばgithubからcloneしてきたり、homebrewでパッケージを入れたり、BetterTouchToolなどのdmgをインストールしたり、macの設定を変更したり。
基本はチームやプロジェクトといった環境での自動化に力を発揮しますが、個人用設定も記述できるので個人用でも問題ないです。使いこなすにはpuppetの知識が必要ですが、ゆるふわに使う分には知らなくても問題ないです。
導入方法
このQiitaの記事を読めばわかります。
Boxen使わなくても許されるのは2012年までだよね - Qiita[キータ]
が、すこしハマったところがあったので補足したいと思います。
resourceのバージョン
Puppetfileに以下のgithub "mysql", "1.1.0"
とか書くんですが、このバージョン名どこからくるのか最初わかりませんでした。
これは普通にtag名でした。いちいち調べるのめんどくさいです。第一の関門。
script/boxen実行時の警告
実行するとBoxen has a dirty tree, won't auto-update!
とか言われることがありました。
これはローカルリポジトリとリモートリポジトリで差異があると出るメッセージなので、ちゃんと同期をとりましょう。
boxenの削除方法
正しいやり方かどうかはわかりませんが、script/nuke
で削除できます(核…?)。
script/nuke --opt
で/opt/boxenを削除、など。
osxのエラーがでる
これが本題なんですが、Error: Could not find class osx for mac.local on node mac.local
といったエラーが出てハマりました。
結論をいうと、ほかのresourceと違ってinclude osx
が不要でした。。
このエラーのせいで何度書き直したことか…!
script/boxenでエラー(2013/11/29追記)
仕事で使ってたmacのSSDがフォーマットされてしまったのでboxenを実行しようとしたら以下のようなエラーが。OSXは10.9。
sudo mkdir -p /opt/boxen sudo chown ${USER}:staff /opt/boxen git clone https://github.com/akiomik/my-boxen.git /opt/boxen/repo cd /opt/boxen/repo script/boxen > ... > Bundler is not compatible with Rubygems 2.0. > Please upgrade to Bundler 1.3 or higher.
これはfetchされてきたbundlerが古いことで起こるものっぽい。 以下のコマンドで解決。
sudo gem install bundler --pre
個人用設定が反映されない(2013/11/29追記)
modules/people/manifests/FOOBAR.pp
のファイル名はgithubのアカウント名に紐づいているという仕様をすっかり失念しており別アカウントで実行したところうまく作られず。
複数アカウントある人は注意。
で、このアカウントの情報がどこに残っているかわからず、sudo rm -rf /opt/boxen
したりscript/nuke --all --force
したり再起動したりいろいろしましたが結局だめで、別アカウントに切り替えられませんでした。
結局OSXのユーザを再作成したところようやくうまく行きました…。
さいごに
さすがmac用というだけあって、結構いろいろできます。 もうちょっとmac用の設定が増えたり、appstoreのアプリがインストールできるようになるとより便利度があがりますね。
puppetを全然使ったことないので使いこなせてない感がありますが、 githubにboxenの設定を上げてみたのでよかったら参考にしてみてください。