Berkshelf + Vagrant で Node.js + MongoDB の仮想環境構築
今更ながら、他のBerkshelfの記事がわかりづらかったので書いていこうと思う。
環境
- mac osx 10.10.1
- Vagrant 1.7.1
chef-dkのインストール
Chef Development Kit | Chef Downloads | Chef
から環境にあったものをダウンロード&インストール。
できたら確認する。
$ berks -v 3.2.1 $ knife -v Chef: 12.0.3 $ chef -v Chef Development Kit Version: 0.3.5
Berkshelfでcookbookを用意する
まず自分用のchefリポジトリを用意します。
$ berks cookbook chef-repo $ ls chef-repo
そしたらまずはリポジトリの中に入ってbundle install
$ cd chef-repo $ bundle install
リポジトリ生成時に生成されたBerksfileを以下のように編集する。
source "https://supermarket.getchef.com" metadata cookbook 'nodejs' cookbook 'mongodb' cookbook 'npm'
ここで
$ berks install
を実行すると Berksfile に書かれた cookbook を ~/.berkshelf にインストールします。
これらの cookbook を指定した場所に持ってくるには
$ berks vendor ./recipes $ ls ./recipes 7-zip ark chef_handler mongodb python yum apt build-essential cookbook nodejs windows yum-epel
を実行します。
berks vendor PATH で指定した PATH に持ってこれます。
Vagrantfileの設定
最後にVagrantfileの設定をしたいと思います。
今回はこんな感じにしました。
# -*- mode: ruby -*- # vi: set ft=ruby : # Vagrantfile API/syntax version. Don't touch unless you know what you're doing! VAGRANTFILE_API_VERSION = '2' Vagrant.require_version '>= 1.5.0' Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.hostname = 'cookbook-berkshelf' # ubuntu 14.04 LST config.vm.box = "ubuntu-server-trusty" config.vm.box_url = "https://cloud-images.ubuntu.com/vagrant/trusty/current/trusty-server-cloudimg-amd64-vagrant-disk1.box" # DHCP使用のゲストの port 3000とホストの port 3000 をマッピング config.vm.network :forwarded_port, guest: 3000, host: 3000 config.vm.network :private_network, type: 'dhcp' # 共有フォルダの設定 config.vm.synced_folder "./develop", "/vagrant" # provider 設定 config.vm.provider :virtualbox do |vb| vb.customize ["modifyvm", :id, "--memory", "512"] end # berkshelfのプラグインを使わない。これ重要 config.berkshelf.enabled = false config.vm.provision :chef_solo do |chef| chef.cookbooks_path = "./chef-repo/recipes" chef.run_list = [ "recipe[nodejs]", "recipe[mongodb]" ] #vagrant-omnibusで使うchefの設定。Vagrantfileの最後のendのすぐ上に追記しておく。 config.omnibus.chef_version = :latest end end
Vagrant の Berkshelt のプラグインはいまいち調子が悪いのでここでは使わないようにします。
編集が終わったら起動しましょう。
$ vagrant up
無事エラーなく起動したら
$ vagrant ssh vagrant@cookbook-berkshelf:~$ vagrant@cookbook-berkshelf:~$ node -v v0.10.34 vagrant@cookbook-berkshelf:~$ npm -v 1.4.28 vagrant@cookbook-berkshelf:~$ mongo MongoDB shell version: 2.4.9 connecting to: tes
以上です〜♪