利用しているのは、CentOS 6.4 の、64bit版です。
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "centos64-x86_64"
config.vm.define :node01 do |vm_config|
vm_config.vm.network :private_network, ip: "192.168.33.31"
vm_config.vm.host_name = "node01.local"
vm_config.vm.provider "virtualbox" do |v|
v.customize ["modifyvm", :id, "--memory", 1024]
end
end
end
バージョン1.4.3で動作確認してます。
[nodejs]
node01.local
[all:vars]
ansible_ssh_user=vagrant
ansible_ssh_private_key_file=/home/inori/.vagrant.d/insecure_private_key
- hosts: nodejs
user: vagrant
sudo: no
vars:
homedir: /home/vagrant/
nodejs:
version: v0.11.13
nvm:
version: v0.5.1
tasks:
- name: install nvm
git: repo=https://github.com/creationix/nvm.git
dest=~/.nvm
version={{ nvm.version }}
- name: nvm enabled
lineinfile: dest={{ homedir }}.bashrc
regexp="^source.*nvm.*"
line="source ~/.nvm/nvm.sh"
insertafter=EOF
- name: nvm install nodejs
raw: nvm install {{ nodejs.version }};nvm alias default {{ nodejs.version }}
- name: npm install forever globally
npm: name=forever
global=yes
executable={{ homedir }}.nvm/v0.11.13/bin/npm
実行はまぁ、普通にこんな感じ。
ansible-playbook -i hosts playbook.yml
nvm経由でNodejsをインストールし、foreverをグローバルインストールする。
適当なNodejsアプリを作る。このとき、起動を簡単にするため、package.jsonに以下の記述を入れる。
-c \"node --harmony\"
は、koa.jsとか使うときだけ書く。
{
"scripts": {
"start": "forever -w -c \"node --harmony\" index.js",
"stop": "forever stop index.js",
"restart": "forever restart index.js"
}
}
上記nodejs-appが、git@github.com:user/nodejs-app.gitにホスティングされているとしたとき、
vagrant ssh
で、ゲストOSに入ったところから
git clone git@github.com:yu0819ki/git_dev_tools.git
git_dev_tools/git_bare.sh git@github.com:user/nodejs-app.git /home/vagrant/bare/nodejs-app.git /home/vagrant/nodejs-app
cd /home/vagrant/hodejs-app;npm install
git_dev_tools/git_bare.shの詳細は以下を参照
https://github.com/yu0819ki/git_dev_tools/blob/master/readme.md
ホストOSでは、ゲストOSのベアリポジトリからクローンしてきて、プッシュするだけ。
git clone vagrant@node01.local:bare/nodejs-app.git
git commit -a -m "--";git push
package.jsonにstart, stop, restartを書いてあるので、
npm start
npm stop
npm restart
で制御できる。
npm start
するだけで、ファイルの変更をウォッチするようにしてあるので、foreverが勝手に再起動してくれて便利。