mirror of
https://codeberg.org/scottslowe/learning-tools.git
synced 2026-03-11 09:04:37 +00:00
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.
43 lines
1.3 KiB
Ruby
43 lines
1.3 KiB
Ruby
# -*- mode: ruby -*-
|
|
# vi: set ft=ruby :
|
|
|
|
# Specify Vagrant version and Vagrant API version
|
|
Vagrant.require_version ">= 1.6.0"
|
|
VAGRANTFILE_API_VERSION = "2"
|
|
ENV['VAGRANT_VMWARE_CLONE_DIRECTORY'] = '~/.vagrant'
|
|
|
|
# Require 'yaml' module
|
|
require 'yaml'
|
|
|
|
# Read YAML file with VM details (box, CPU, and RAM)
|
|
servers = YAML.load_file(File.join(File.dirname(__FILE__), 'servers.yml'))
|
|
|
|
# Create and configure the VMs
|
|
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
|
|
|
|
# Always use Vagrant's default insecure key
|
|
config.ssh.insert_key = false
|
|
|
|
# Iterate through entries in YAML file to create VMs
|
|
servers.each do |servers|
|
|
config.vm.define servers["name"] do |srv|
|
|
|
|
# Don't check for box updates
|
|
srv.vm.box_check_update = false
|
|
srv.vm.hostname = servers["name"]
|
|
srv.vm.box = servers["box"]
|
|
|
|
# Enable default synced folder
|
|
srv.vm.synced_folder ".", "/vagrant"
|
|
# Perform final provisioning activities
|
|
srv.vm.provision "shell", path: "config.sh", privileged: true
|
|
srv.vm.provision "file", source: "adminrc", destination: "/home/vagrant/adminrc"
|
|
|
|
# Configure VMs with RAM and CPUs per settings in servers.yml
|
|
srv.vm.provider :vmware_fusion do |vmw|
|
|
vmw.vmx["memsize"] = servers["ram"]
|
|
vmw.vmx["numvcpus"] = servers["vcpu"]
|
|
end
|
|
end
|
|
end
|
|
end
|