scottslowe-learning-tools/photon-cloudinit/Vagrantfile
Scott Lowe 81b1458b0f Add Ruby code to all Vagrantfiles
Add Ruby code to determine full path to supporting files referenced
in all Vagrantfiles. This will allow more effective use of Vagrant
commands when not in the same directory as the Vagrantfile.
2016-01-13 13:48:02 -07:00

74 lines
2.6 KiB
Ruby

# -*- mode: ruby -*-
# vi: set ft=ruby :
# Specify Vagrant version, Vagrant API version, and Vagrant clone location
# Adjust commented lines to specify provider
Vagrant.require_version ">= 1.6.0"
VAGRANTFILE_API_VERSION = "2"
#ENV['VAGRANT_DEFAULT_PROVIDER'] = 'vmware_fusion'
#ENV['VAGRANT_VMWARE_CLONE_DIRECTORY'] = '~/.vagrant'
#ENV['VAGRANT_DEFAULT_PROVIDER'] = 'virtualbox'
ENV['VAGRANT_DEFAULT_PROVIDER'] = 'vmware_appcatalyst'
# Require 'yaml' module
require 'yaml'
# Read YAML file to get VM configuration information
# Edit servers.yml to change VM configuration details
servers = YAML.load_file(File.join(File.dirname(__FILE__), 'servers.yml'))
# Look for user-data and meta-data files in same directory
USER_DATA = File.join(File.dirname(__FILE__), "user-data")
META_DATA = File.join(File.dirname(__FILE__), "meta-data")
# Create and configure the VMs
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
# Use Vagrant's default insecure SSH key
config.ssh.insert_key = false
# Iterate through entries in YAML file to create VMs
servers.each do |servers|
# Configure the VMs per details in servers.yml
config.vm.define servers["name"] do |srv|
# Don't check for box updates
srv.vm.box_check_update = false
# Specify the hostname of the VM
srv.vm.hostname = servers["name"]
# Specify the Vagrant box to use
srv.vm.box = servers["box"]
# Disable default synced folder (not supported with Photon)
srv.vm.synced_folder ".", "/vagrant", disabled: true
# Configure VMs with RAM and CPUs per servers.yml (Fusion)
srv.vm.provider :vmware_fusion do |vmw|
vmw.vmx["memsize"] = servers["ram"]
vmw.vmx["numvcpus"] = servers["vcpu"]
end # srv.vm.provider vmware_fusion
# Configure VMs with RAM and CPUs per servers.yml (AppCatalyst)
srv.vm.provider :vmware_appcatalyst do |vmw|
vmw.vmx["memsize"] = servers["ram"]
vmw.vmx["numvcpus"] = servers["vcpu"]
end # srv.vm.provider vmware_appcatalyst
# Configure VMs with RAM and CPUs per servers.yml (VirtualBox)
srv.vm.provider :virtualbox do |vb|
vb.memory = servers["ram"]
vb.cpus = servers["vcpu"]
end # srv.vm.provider virtualbox
# Configure Photon boxes to use cloud-init
if srv.vm.box == "vmware/photon"
srv.vm.provision "file", source: "#{USER_DATA}", destination: "/home/vagrant/user-data"
srv.vm.provision "file", source: "#{META_DATA}", destination: "/home/vagrant/meta-data"
srv.vm.provision "shell", path: "setup.sh", privileged: true
end # if srv.vm.box
end # config.vm.define
end # servers.each
end # Vagrant.configure