僕の働いている会社では、mizzy さんが Maglica という素晴らしいツール (Maglica の説明のスライド) を作られていて、VM が一瞬で構築できるようになってます。
これは本当に life changing で時間も削減できるし、また VM を作ったり消したりが気軽にできるので開発には本当に便利になりました。
しかしながら、先週チームに Windows を使うデザイナーがアサインしてきて (今までチームには Mac 使いしかいなかった) 、Maglica で VM を作って手作業で Linux の Rails 環境を一緒に構築してたけど、 せっかく VM の箇所が自動化できてるのにこういうことをやっちゃいけないなーと思いました。
ちょうど新卒の教育向けに @hiboma が Chef Solo Tutorial をしていたのもあったし、 僕もそれを見ててちょっと意識が高まったので少しでも自動化してみようと思いちょっとやってました。
Chef Solo 自体はちょうど1年半くらい前にさくらの VPS を構築する時にちょっとだけ触ったことある程度です。 その時の recipe、cookbook を見ると、なんというか色々入りすぎてて、もう使う気もしない感じでした。
ちなみに1年半前よりも GitHub で検索しても情報がすごい増えた気がしました。
ということで新しく作り直して、GitHub にあげてみました。
https://github.com/banyan/chef
こうしたほうがもっと幸せになれるとかあったら教えて頂けるとありがたいです。
サーバはさくらの VPS を契約して放置したままだったので、 それを使いながらと、あと EC2 で一個 VM 作ってそれと同時に試してました。
とりあえずの方針としては
- 必ずいれるソフトウェアのパッケージを管理する
- なるべくミニマムにする。本当に必要なものだけ。
- package 単位で cookbook を作る
- rbenv, ruby-build
- ufw, ssh の設定をする
- role をいい感じにわける
というところでそれくらいまではできた感じです。
これからやることとしては、
- 最初にいれる Ruby + Chef + Git も Capistrano で操作する
- Unicorn
- Supervisor
- Mac (homebrew の管理)
- Redhat 系の対応
- Chef Solo + Capistrano
- Role とかもっといい感じにできそう
などがうまくできるようになるといいなと思います。
実際に改めて触ってみるとまだちょっとしかできてないけど、TDD 感覚でサーバを構築できるのは楽しい感じがしますね。
いまいち分かってないことや確信を得れてないことはまだたくさんあるのですが、 とりあえずまず晒しながら update していこうと思います。