はじめに感想
もう何週遅れかわかりますが、自分でもやってみたのでポスト。ローカルマシンに VirtualBox などの VM での構築を自動化したい人のための記事です。ただ、Chef でのやり方多様過ぎて初心者にはどの方法が良いのかわからなかったので、この投稿が僕と同じChef 童貞の役に立てればと思ってます。いずれはAnsibleも触ってみたい。
インストール
Requirements
- Ruby 2.0.0-p0 and up.
- VirtualBox
- Vagrant
- berkshelf
- vagrant-berkshelf plugin Vagrant はパッケージからインストールすること。理由は以下のとおり。
Gem Install? Vagrant 1.0.x had the option to be installed as a RubyGem. This installation method has been removed for installers and packages only.
berkshelfは Cookbook の依存関係管理ツール
$ gem install berkshelf
vagrant-berkshelf は Vagrant の berkshelf プラグインでローカルに VM 立てる場合は Knife-solo より便利
$ vagrant plugin install vagrant-berkshelf
Cookbook を作る
まずは適当な場所に Cookbook のテンプレートを生成
# hogehogeはお好きなプロジェクト名で
$ berks cookbook hogehoge
今回は node と git をインストールしてみます。 編集するのは Berksfile と Vagrantfile。 Berksfile
site :opscode
metadata
cookbook 'git'
cookbook 'nodejs'
Vagrantfile
# ファイルの最後の方を編集
chef.run_list = [
"recipe[git]",
"recipe[nodejs]"
]
いよいよ Cookbook を生成します。
$ berks install --path cookbooks
あとは Vagrant を起動するだけで同時にレシピが実行されます。
$ vagrant up
# しばらくして構成が終わったらSSHでログイン
$ vagrant ssh
補足
- ときどき構築に失敗する事がある。その時はホストマシンを再起動させるとちゃんと構築できる。原因がいまいちわからないので、どなたか教えてやってください。
- あたり前だけど GUI の VirtualBox からも管理できる。Vagrant が便利すぎて忘れてた。
- メモリ 4GB の Macbook Air だとキツイ気がする。
- もしかしたら Opscode のアカウント必要だったかも。