Skip to content

Instantly share code, notes, and snippets.

@keidrun
Created June 28, 2017 14:57
Show Gist options
  • Select an option

  • Save keidrun/193c69f8bc0a854acc8ebb3c26e51d37 to your computer and use it in GitHub Desktop.

Select an option

Save keidrun/193c69f8bc0a854acc8ebb3c26e51d37 to your computer and use it in GitHub Desktop.
Sample Vagrantfile of node development environment on Windows.
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure(2) do |config|
# box
config.vm.box = "centos65-x86_64-20140116"
config.vm.define "dev-server" do |node|
# host
node.vm.hostname = "dev-server"
# network
node.vm.network "private_network", ip:"192.168.33.12"
node.vm.network "forwarded_port", guest:22, host:2223, id:"ssh"
node.vm.network "forwarded_port", guest:1337, host:1338
node.vm.network "forwarded_port", guest:27017, host:27018
# debug
node.vm.network "forwarded_port", guest:8080, host:8082, id:"http"
# rsync
node.vm.synced_folder "C:\\Users\\user\\testspace\\workspace\\App1", "/home/vagrant/workspace/App1",
type: "rsync",
owner: "vagrant",
group: "vagrant",
rsync__exclude: [".git/", "node_modules/"]
node.vm.synced_folder "C:\\Users\\user\\workpace\\workspace\\App2", "/home/vagrant/workspace/App2",
type: "rsync",
owner: "vagrant",
group: "vagrant",
rsync__exclude: [".git/", "node_modules/"]
node.vm.synced_folder "C:\\Users\\user\\workspace\\workspace\\App3", "/home/vagrant/workspace/App3",
type: "rsync",
owner: "vagrant",
group: "vagrant",
rsync__exclude: [".git/", "node_modules/"]
node.vm.provision "shell", inline: <<-SHELL
# hosts
if [ ! `cat /etc/hosts | grep 'npmjs'` ]; then
sudo echo '23.235.39.162 registry.npmjs.com' >> /etc/hosts
sudo echo '23.235.39.162 registry.npmjs.org' >> /etc/hosts
fi
# update
sudo rpm -ivh http://ftp.riken.jp/Linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
sudo yum update -y
# packages
sudo yum install -y git rsync lsof
# node
git clone https://github.com/creationix/nvm.git /home/vagrant/.nvm
if [ ! `cat /home/vagrant/.bashrc | grep 'NVM_DIR'` ]; then
sudo echo 'export NVM_DIR="$HOME/.nvm"' >> /home/vagrant/.bashrc
sudo echo '[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"' >> /home/vagrant/.bashrc
#sudo echo 'nvm alias default v0.12.12' >> /home/vagrant/.bashrc
fi
source /home/vagrant/.nvm/nvm.sh
nvm install v0.12.12
# mongod
sudo touch /etc/yum.repos.d/mongodb.repo
sudo echo "[mongodb]" > /etc/yum.repos.d/mongodb.repo
sudo echo "name=MongoDB Repository" >> /etc/yum.repos.d/mongodb.repo
sudo echo "baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64/" >> /etc/yum.repos.d/mongodb.repo
sudo echo "gpgcheck=0" >> /etc/yum.repos.d/mongodb.repo
sudo echo "enabled=1" >> /etc/yum.repos.d/mongodb.repo
sudo yum install -y mongodb-org
sudo chkconfig --add mongod
sudo chkconfig mongod on
if [ ! `service mongod status | grep 'running'` ]; then
sudo service mongod start
fi
# memcached
#sudo rpm -ivh http://apt.sw.be/redhat/el6/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
sudo yum install -y memcached
sudo chkconfig --add memcached
sudo chkconfig memcached on
if [ ! `service memcached status | grep 'running'` ]; then
sudo service memcached start
fi
# nginx
sudo rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
sudo yum install -y nginx
sudo chkconfig --add nginx
sudo chkconfig nginx on
if [ ! `service nginx status | grep 'running'` ]; then
sudo service nginx start
fi
# firewall off
sudo service iptables stop
sudo service ip6tables stop
sudo chkconfig iptables off
sudo chkconfig ip6tables off
# selinux off
sudo sed -i "s/\(^SELINUX=\).*/\1disabled/" /etc/selinux/config
# home permission
chown vagrant.vagrant -R /home/vagrant
SHELL
end
config.vm.provider "virtualbox" do |vb|
vb.memory = "1024"
vb.gui = false
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment