Skip to content

Vagrantfile

Vagrantfile

This file is a simple set of instructions built in Ruby that tells QMI how and what to build. This file is used to create the scenario and configure the virtual machine.

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.require_version ">= 1.6.2"

# Relative path where 'shared-content' can be found
sharedContentRelativePath = '../shared-content'

require 'json'
# Module dependency for custom VM values setup
require File.dirname(__FILE__) + '/' + sharedContentRelativePath + '/scripts/custom-setup.rb'

# Load scenario data configuration file
scenario = JSON.parse(File.read(File.join(File.dirname(__FILE__), 'scenario.json')))
# Overwrite of VM values (cpus, memory) from custom values setup in QMI client
vals = CustomSetup.getValues( scenario )["servers"][0]


# Vagrant intialization
Vagrant.configure("2") do |config|

    config.vm.define vals["name"]
    config.vm.box = vals["box"]
    config.vm.network "private_network", ip: vals["ip"]
    config.vm.hostname = vals["name"]

    config.vm.provider :virtualbox do |v, override|
        v.name = vals["name"]
        v.linked_clone = true
        # v.customize ['setextradata', :id, 'GUI/ScaleFactor', '1.25']
        v.customize ["modifyvm", :id, "--memory", vals["memory"]]
        v.customize ["modifyvm", :id, "--cpus", vals["cpus"]]
        v.customize ["modifyvm", :id, "--vram", 64]
        v.customize ["modifyvm", :id, "--clipboard", "bidirectional"]

    end

    # Shared synced folders setup (Host <-> Guest)
    config.vm.synced_folder "./files", "c:/installation/"
    config.vm.synced_folder sharedContentRelativePath, "c:/shared-content/"

    # Provision scripts execution
    config.vm.provision :shell, path: sharedContentRelativePath + "/scripts/modules/q-bootstrap.ps1"
    config.vm.provision :shell, path: "./scripts/provisioner.ps1"

end