You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
2.7 KiB
Ruby
71 lines
2.7 KiB
Ruby
# -*- mode: ruby -*-
|
|
# vi: set ft=ruby :
|
|
|
|
require 'yaml'
|
|
|
|
ansible_vars = YAML.load_file('provisioning/vars.yml')
|
|
|
|
app_name = ansible_vars["nodejs_app_name"]
|
|
|
|
app_directory = ansible_vars["nodejs_app_install_dir"]
|
|
|
|
# Check for the existence of 'VM_HOST_TCP_PORT' or 'VM_GUEST_TCP_PORT'
|
|
# environment variables. Otherwise if 'nodejs_app_tcp_port' is defined
|
|
# in vars.yml then use that port. Failing that use defaults provided
|
|
# in this file.
|
|
host_tcp_port = ENV["VM_HOST_TCP_PORT"] || ansible_vars["nodejs_app_tcp_port"] || 8080
|
|
guest_tcp_port = ENV["VM_GUEST_TCP_PORT"] || ansible_vars["nodejs_app_tcp_port"] || 8080
|
|
|
|
# By default this VM will use 1 processor core and 1GB of RAM. The 'VM_CPUS' and
|
|
# "VM_RAM" environment variables can be used to change that behaviour.
|
|
cpus = ENV["VM_CPUS"] || 1
|
|
ram = ENV["VM_RAM"] || 1048
|
|
|
|
Vagrant.configure(2) do |config|
|
|
|
|
config.vm.box = "inclusivedesign/centos7"
|
|
|
|
# Your working directory will be synced to /home/vagrant/sync in the VM.
|
|
config.vm.synced_folder ".", "#{app_directory}"
|
|
|
|
# List additional directories to sync to the VM in your "Vagrantfile.local" file
|
|
# using the following format:
|
|
# config.vm.synced_folder "../path/on/your/host/os/your-project", "/home/vagrant/sync/your-project"
|
|
|
|
# Port forwarding takes place here. The 'guest' port is used inside the VM
|
|
# whereas the 'host' port is used by your host operating system.
|
|
config.vm.network "forwarded_port", guest: guest_tcp_port, host: host_tcp_port, protocol: "tcp",
|
|
auto_correct: true
|
|
|
|
# Port 19531 is needed so logs can be viewed using systemd-journal-gateway
|
|
config.vm.network "forwarded_port", guest: 19531, host: 19531, protocol: "tcp",
|
|
auto_correct: true
|
|
|
|
config.vm.hostname = app_name
|
|
|
|
config.vm.provider :virtualbox do |vm|
|
|
vm.customize ["modifyvm", :id, "--memory", ram]
|
|
vm.customize ["modifyvm", :id, "--cpus", cpus]
|
|
end
|
|
|
|
# The ansible-galaxy command assumes a git client is available in the VM, the
|
|
# inclusivedesign/centos7 Vagrant box includes one.
|
|
config.vm.provision "shell", inline: <<-SHELL
|
|
sudo ansible-galaxy install -fr #{app_directory}/provisioning/requirements.yml
|
|
sudo PYTHONUNBUFFERED=1 ansible-playbook #{app_directory}/provisioning/playbook.yml --tags="install,configure,deploy"
|
|
SHELL
|
|
|
|
# 'Vagrantfile.local' should be excluded from version control.
|
|
if File.exist? "Vagrantfile.local"
|
|
instance_eval File.read("Vagrantfile.local"), "Vagrantfile.local"
|
|
end
|
|
|
|
# http://serverfault.com/a/725051
|
|
config.vm.provision "shell", inline: "sudo systemctl restart #{app_name}.service",
|
|
run: "always"
|
|
|
|
config.vm.provision "shell", inline: "sudo systemctl restart systemd-journal-gatewayd.service",
|
|
run: "always"
|
|
|
|
end
|