Vagrantfile #4

  • //
  • guest/
  • perforce_software/
  • cbd/
  • dev/
  • test/
  • Vagrantfile
  • View
  • Commits
  • Open Download .zip Download (2 KB)
# -*- mode: ruby -*-
# vi: set ft=ruby :

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"

our_domain = "p4demo.com"

# Read VM config from JSON file.
helix_config = (JSON.parse(File.read("helix_server.json")))

class HSError < Vagrant::Errors::VagrantError
   error_key "Helix Server Configuration error"
end
if !helix_config.has_key?("oses")
  raise HSError.new("Please define boxes in helix_server.json file.")
end

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  # All Vagrant configuration is done here. The most common configuration
  # options are documented and commented below. For a complete reference,
  # please see the online documentation at vagrantup.com.

  # If true, then any SSH connections made will enable agent forwarding.
  # Default value: false
  config.ssh.forward_agent = true

  if Vagrant.has_plugin?("vagrant-hostmanager")
    config.hostmanager.enabled = true
    config.hostmanager.manage_host = true
    config.hostmanager.ignore_private_ip = false
    config.hostmanager.include_offline = true
  end

  helix_config['oses'].each do |os|
    osname = os['osname']
    os['nodes'].each do |node|
      #hostname = "#{osname}-#{node[':nodename']}"
      hostname = "#{node[':nodename']}"
      os_bootstrap = "bootstrap-#{osname}.sh"
      config.vm.define hostname.to_sym do |machine|
        if Vagrant.has_plugin?("vagrant-cachier")
          machine.cache.scope = :box
        end
        machine.vm.box = os['box']
        machine.vm.box_url =  os['box_url']
        machine.vm.synced_folder "./shared", "/shared"
        # Set the root password to 'F@stSCM!'
        machine.vm.provision "shell", inline: "echo 'root:F@stSCM!' | sudo chpasswd"

        # Updated the VM and install various packages.
        machine.vm.provision :shell, :path => os_bootstrap

        # Prepare for Perforce operation.
        machine.vm.provision :shell, :path => "bootstrap-sdp-setup.sh"

        # Run initial CBD Test Suite.
        machine.vm.provision :shell, :path => "auto_test_cbd_vagrant.sh"

        machine.vm.network :private_network, ip: node[':ip']
        machine.vm.hostname = hostname + "." + our_domain
        machine.hostmanager.aliases = ["#{hostname}.localdomain", "#{hostname}"]
      end
    end
  end
end
# Change User Description Committed
#4 19253 C. Thomas Tyler Routine merge-down from main to dev.
#3 14928 C. Thomas Tyler Tweakes to Vagrant test flow.
#2 14904 C. Thomas Tyler Prepared CentOS VM, initialized by Vagrant (command-line virtual machine
management) for ground-up test environment building, starting from the
vanilla CentOS OS installation.

Modified startup scripts to use the Helix Installer to simpfliy the bulk of
the installation.

Added test config file for testing on Vagrant-initialized 'helix-01' box.
#1 11354 C. Thomas Tyler Started work on Vagrant test harness.