hakomikan
11/13/2016 - 1:05 PM

Vagrantfile for nodejs on Windows

Vagrantfile for nodejs on Windows

Vagrant::configure("2") do |config|
    config.vm.provider "virtualbox" do |v|
        v.linked_clone = true
        v.memory = 1024
    end

    config.vm.hostname = "vagrant"
    config.vm.box = "ubuntu/trusty64"
    config.vm.synced_folder ".", "/home/vagrant/app"

    # default port
    config.vm.network "forwarded_port", guest: 3000, host: 3000
    # debug port
    config.vm.network "forwarded_port", guest: 9229, host: 9229

    config.vm.provision "install tools",
        type: "shell",
        privileged: false,
        inline: <<-SHELL
            export DEBIAN_FRONTEND=noninteractive

            sudo apt-get install -y wget curl 

            sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
            echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
            curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -
            
            sudo apt-get update

            sudo apt-get install -y git zsh whois nodejs emacs lv bindfs
            sudo apt-get install -y mongodb-org=3.2.9 mongodb-org-server=3.2.9 mongodb-org-shell=3.2.9 mongodb-org-mongos=3.2.9 mongodb-org-tools=3.2.9
            wget -O- https://toolbelt.heroku.com/install-ubuntu.sh | sh
        SHELL

    config.vm.provision "export env",
        type: "shell",
        run: "always",
        privileged: true,
        inline: <<-SHELL
            echo "# vagrant script for every boot" > /etc/profile.d/vagrant.sh
            echo export CLIENT_SECRET=#{ENV['CLIENT_SECRET']} >> /etc/profile.d/vagrant.sh 
            echo export CLIENT_ID=#{ENV['CLIENT_ID']} >> /etc/profile.d/vagrant.sh            
            chmod +x /etc/profile.d/vagrant.sh
        SHELL

    config.vm.provision "bind directories",
        type: "shell",
        run: "always",
        privileged: false,
        inline: <<-SHELL
            mkdir -p ~/tmp_node_modules
            mkdir -p ~/app/node_modules        
            sudo bindfs /home/vagrant/app /home/vagrant/app -p 0755 -u vagrant
            sudo bindfs /home/vagrant/tmp_node_modules /home/vagrant/app/node_modules -p 0755 -u vagrant
        SHELL
    
    if ENV['USE_DOTFILES'] == "1" then
        config.vm.synced_folder ENV['DOTFILES_DIR'], "/home/vagrant/dotfiles"
        config.vm.provision "setup dotfiles",
            type: "shell",
            privileged: false,
            inline: <<-SHELL
                script=/home/vagrant/dotfiles/#{ENV['DOTFILES_SETUPSCRIPT_NAME']}
                echo dotfiles source dir: #{ENV['DOTFILES_DIR']}
                if [ -f $script ]; then
                    echo setup dotfiles by $script
                    $script
                else
                    echo $script is not found
                fi
            SHELL
    end
end