Mac OS X 向け開発環境プロビジョニングのツールとして Boxen by GitHub が有名だが、 Sprout by Pivotal Labs (以下pivotal-sprout)も同じ目的のツールである。日本語情報が全然無いようなので軽く紹介する。
最大の特徴は、BoxenがPuppetベースなのに対し、pivotal-sproutは Chefベース であること。
他にも以下のような違いがある。
homebrew、rbenvの特殊インストール縛りは無い
- Boxenは独自のディレクトリに上掲のツールを入れるので、既存の環境の場合アンインストールが必要なことがある。
上に関連して、イニシャルスクリプトとして使いやすい
- homebrewもrbenvもごく普通の入れ方をするので、その後pivotal-sproutで管理しなくても普通に使える。
Chefが得意ならカスタマイズもハックも楽
- ぼくはそうなので...
-
brew
と言うリソースがあるので入れていないものは個人のレシピ集を作って、それ経由で入れればいい。brewで入らない場合もexecute
+creates
オプションあたりでインストールコマンドを羅列すればたいてい何とかなる。dmg_package
というのもあるらしい、詳しくはソースへ。
ちょうべんりだが、デメリットもあって、
日本語情報が全然ない
- 最大のもの。おまけに、用意されたレシピの意味がぱっと見よく分からない。Chefのレシピを実際に読んで追える程度に精通してるのなら良いツールになってくれるのでは?
デフォルトでよくわからないアプリを一杯入れる
- forkしてsoloistrcをコメントアウトすればいいだけだが、「これ、コメントアウトしていいのかな?」みたいなレシピ名が結構あってヤバい。まあ、謎アプリを我慢したり、むしろ使いこなす方向もあると思う。
レシピが凄いとっ散らかっている
- 旧名「pivotal_workstation」で、徐々にsprout-*のネームスペースに移動してるっぽいけど、pivotal_workstationと言う名前空間の下に残ってるものも沢山ある。なのでgitのレシピ一つにしてもどっちなのかクックブック内部に確認しに行かなければならなかったりする。
つまるところPuppetに慣れているのならBoxenで、Chefに慣れているのならpivotal-sproutで環境管理すればいいんじゃないでしょうか。あと、集団で環境を合わせたいのならBoxen-webとかがあるBoxenの方が楽かもしれない。逆にpivotal-sproutはその後のマシンを管理しないイニシャルスクリプトですよ、と割り切ることもできる。
あと、どっちも なんだかんだプロビジョニングが失敗しまくる ので、直しては実行しまた直しになりがちだと思う。まあ、ベキトーセーがあるので何度実行しても安心なんですが!
プロビジョニングこけまくるのにそれって意味あるのかと言う話もあるが、Chefさんがこけるのを直す駆動でセットアップするのは割と指向性として楽な感じはする。ちくちくGistのメモを見ながらコピペでやるより疲れないと言うか。というか、まあ、そんなコケないっすよ(どっち)。
あとあと、pivotal-sproutはbrew実行時のcurlがなぜか死にがちだったので、curlプロセスを強制終了したりしたことがあった。
そんな感じ。
pivotal-sprout の実行はsprout-wrapと言うプロジェクトを利用する。 README見れ で終わりだが、一応補足しとく。
- コマンドライントゥールはもちろん入れる。他に必要なツールは無い。gitもrubyも最初からあるやつで良し。
- sprout-wrapをホークしとく。
-
soloistrc
を編集しとく。この設定YAMLの意味はシェフマスターなら見れば分かると思う。 - sprout-wrap プロジェクトのルートで以下(System Ruby 推奨)
git clone https://github.com/pivotal-sprout/sprout-wrap.git
cd sprout-wrap
sudo gem install bundler
sudo bundle
bundle exec soloist
Mountain LionでもMavericksでも大丈夫そう。
終わり。
外部レシピ、カスタムレシピを使う場合はCheffile、librarian-chefについて、Googleと言う凄い便利なサイトで検索してほしい。
ぼくはカスタムレシピを udzura_workstation として公開している。チンケなレシピだけれど参考になるのなら何より。