mirror of
https://codeberg.org/scottslowe/learning-tools.git
synced 2026-03-11 09:04:37 +00:00
Update files based on additional testing. Add lines to Vagrantfile to use virtio NICs w/ VirtualBox. Re-arrange config keys in Consul configuration template. Add quotes to IP addresses in machines.yml. Update Ansible playbook in provision.yml to install Python OVS libraries.
72 lines
2.4 KiB
Ruby
72 lines
2.4 KiB
Ruby
# -*- mode: ruby -*-
|
|
# vi: set ft=ruby :
|
|
|
|
# Specify minimum Vagrant version and Vagrant API version
|
|
Vagrant.require_version '>= 1.6.0'
|
|
VAGRANTFILE_API_VERSION = '2'
|
|
|
|
# Require 'yaml' module
|
|
require 'yaml'
|
|
|
|
# Read YAML file with VM details (box, CPU, RAM, IP addresses)
|
|
# Edit machines.yml to change VM configuration details
|
|
machines = YAML.load_file(File.join(File.dirname(__FILE__), 'machines.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
|
|
machines.each do |machine|
|
|
|
|
# Configure the VMs per details in machines.yml
|
|
config.vm.define machine['name'] do |srv|
|
|
|
|
# Don't check for box updates
|
|
srv.vm.box_check_update = false
|
|
|
|
# Specify the hostname of the VM
|
|
srv.vm.hostname = machine['name']
|
|
|
|
# Specify the Vagrant box to use (use VMware box by default)
|
|
srv.vm.box = machine['vmw_box']
|
|
|
|
# Configure default synced folder (disable by default)
|
|
if machine['sync_disabled'] != nil
|
|
srv.vm.synced_folder '.', '/vagrant', disabled: machine['sync_disabled']
|
|
else
|
|
srv.vm.synced_folder '.', '/vagrant', disabled: true
|
|
end #if machine['sync_disabled']
|
|
|
|
# Assign additional private network
|
|
if machine['ip_addr'] != nil
|
|
srv.vm.network 'private_network', ip: machine['ip_addr']
|
|
end # if machine['ip_addr']
|
|
|
|
# Configure CPU & RAM per settings in machines.yml (Fusion)
|
|
srv.vm.provider 'vmware_fusion' do |vmw|
|
|
vmw.vmx['memsize'] = machine['ram']
|
|
vmw.vmx['numvcpus'] = machine['vcpu']
|
|
if machine['nested'] == true
|
|
vmw.vmx['vhv.enable'] = 'TRUE'
|
|
end #if machine['nested']
|
|
end # srv.vm.provider 'vmware_fusion'
|
|
|
|
# Configure CPU & RAM per settings in machines.yml (VirtualBox)
|
|
srv.vm.provider 'virtualbox' do |vb, override|
|
|
vb.memory = machine['ram']
|
|
vb.cpus = machine['vcpu']
|
|
override.vm.box = machine['vb_box']
|
|
vb.customize ['modifyvm', :id, '--nictype1', 'virtio']
|
|
vb.customize ['modifyvm', :id, '--nictype2', 'virtio']
|
|
end # srv.vm.provider 'virtualbox'
|
|
end # config.vm.define
|
|
end # machines.each
|
|
|
|
# Provision the VM with Ansible
|
|
config.vm.provision 'ansible' do |ansible|
|
|
ansible.playbook = 'update.yml'
|
|
end # config.vm.provision
|
|
end # Vagrant.configure
|