diff --git a/doc/training-guide/training-labs/Vagrantfile b/doc/training-guide/training-labs/Vagrantfile new file mode 100644 index 0000000000..63069ba30c --- /dev/null +++ b/doc/training-guide/training-labs/Vagrantfile @@ -0,0 +1,98 @@ +# -*- mode: ruby -*- +# vi: set ft=ruby : + +# Vagrantfile +# Author: Trevor Roberts Jr (VMTrooper@gmail.com) +# +# NOTE: Before attempting to use this file, follow the required Vagrant deployment steps: +# http://docs.vagrantup.com/v2/installation/index.html +# +# This file directs Vagrant on how to deploy the student VMs. +# It is possible to do a Single-VM or Multi-VM deployment based on +# the entries that are enabled in the "nodes" hash at the start of this file. +# +# By default, only the Single VM (allinone) deployment type is enabled. +# For Multi-VM, comment out 'allinone' and uncomment 'controller', 'compute', and 'network' +# Vagrant uses Virtualbox Guest Additions to modify VM properties +# (hostname, IP, resource allocation) according to VM function. +# +# Vagrant's Shell Provisioner receives deployment instructions from the following files: +# allinone.sh +# controller.sh +# compute.sh +# network.sh +# Removing these files without removing the Shell Provisioner command will cause Vagrant errors +# +# After determining the deployment type, build this environment by typing this command at the prompt: +# vagrant up +# +# Verify your VM status by typing this command at the prompt: +# vagrant status +# +# SSH to your VM by typing this command at the prompt: +# vagrant ssh vmname (ex: vagrant ssh compute) +# +# See the remaining OpenStack Training Labs code for more details at GitHub: +# https://github.com/openstack/openstack-manuals/tree/master/doc/training-guide/training-lab +nodes = { + 'allinone' => 51, +# 'controller' => 51, +# 'compute' => 201, +# 'network' => 210, +} + +# Vagrantfile API/syntax version. Don't touch unless you know what you're doing! +VAGRANTFILE_API_VERSION = "2" + +Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| + + # Every Vagrant virtual environment requires a box (similar to OVA) to build from. + # The Vagrantfile currently uses Ubuntu 12.04 LTS (aka Precise Pangolin) + # Modify the line below and the box_url line to use a different distribution + config.vm.box = "precise64" + + # The url from where the 'config.vm.box' box will be fetched if it + # doesn't already exist on the user's system. + config.vm.box_url = "http://files.vagrantup.com/precise64.box" + + # Define each VM's settings (ex: hostname, IP, RAM, vCPU, etc.) + nodes.each do |prefix, fourth_octet| + config.vm.define "#{prefix}" do |box| + box.vm.hostname = "#{prefix}" + #Management network + box.vm.network :private_network, ip: "10.10.10.#{fourth_octet}", :netmask => "255.255.255.0" + #Services Network + box.vm.network :private_network, ip: "10.20.20.#{fourth_octet}", :netmask => "255.255.255.0" + #API Network + box.vm.network :private_network, ip: "192.168.100.#{fourth_octet}", :netmask => "255.255.255.0" + # Forward port 80 to host port 8080 for only the Controller or All-In-One Deployment for Horizon + if prefix == "controller" or prefix == "allinone" + box.vm.network "forwarded_port", guest: 80, host: 8080 + end + # Run the Shell Provisioning Script file + box.vm.provision :shell, :path => "#{prefix}.sh" + # Advanced VirtualBox settings + box.vm.provider :virtualbox do |vbox| + # Single node resource allocations. will be more selective for multi-node + vbox.customize ["modifyvm", :id, "--memory", 2048] + vbox.customize ["modifyvm", :id, "--cpus", 2] + # Multi-node resource allocation based on the prefix name. + if prefix == "controller" + vbox.customize ["modifyvm", :id, "--memory", 1024] + vbox.customize ["modifyvm", :id, "--cpus", 1] + elsif prefix == "compute" + vbox.customize ["modifyvm", :id, "--memory", 2048] + vbox.customize ["modifyvm", :id, "--cpus", 2] + elsif prefix == "network" + vbox.customize ["modifyvm", :id, "--memory", 1024] + vbox.customize ["modifyvm", :id, "--cpus", 1] + end + #nicpromisc flag begins nic count at 1, not 0. + #setting all NICs to promiscuous mode per Pranav's specification + vbox.customize ["modifyvm", :id, "--nicpromisc2", "allow-all"] + vbox.customize ["modifyvm", :id, "--nicpromisc3", "allow-all"] + vbox.customize ["modifyvm", :id, "--nicpromisc4", "allow-all"] + end + end + end +end diff --git a/doc/training-guide/training-labs/allinone.sh b/doc/training-guide/training-labs/allinone.sh new file mode 100644 index 0000000000..845f90407a --- /dev/null +++ b/doc/training-guide/training-labs/allinone.sh @@ -0,0 +1,30 @@ +# allinone.sh +# +# Author: Trevor Roberts Jr (VMTrooper@gmail.com) +# This script is called by the Vagrant Shell Provisioner to build the student's lab machine. +# +# Vagrant's Shell Provisioner receives deployment instructions from this file. +# Removing this file without removing the Shell Provisioner command in the Vagrantfile +# will cause deployment errors +# +# See the remaining OpenStack Training Labs code for more details at GitHub: +# https://github.com/openstack/openstack-manuals/tree/master/doc/training-guide/training-labs + +#Change to the root user +sudo su - +cd ~ + +#Get latest catalogs from Ubuntu +apt-get update +apt-get install -y vim + +#Copy the deployment scripts to /root +cp -avr /vagrant/Scripts . +cd Scripts +mkdir Logs + +#Execute the deployment scripts +#./auto_scripts.sh +echo "Execute PreInstall Script to Build Student Environment" +bash PreInstall/PreInstall.sh "single-node" > Logs/PreInstall.log + diff --git a/doc/training-guide/training-labs/compute.sh b/doc/training-guide/training-labs/compute.sh new file mode 100644 index 0000000000..7e9f44c6c6 --- /dev/null +++ b/doc/training-guide/training-labs/compute.sh @@ -0,0 +1,30 @@ +# compute.sh +# +# Author: Trevor Roberts Jr (VMTrooper@gmail.com) +# This script is called by the Vagrant Shell Provisioner to build the student's lab machine. +# +# Vagrant's Shell Provisioner receives deployment instructions from this file. +# Removing this file without removing the Shell Provisioner command in the Vagrantfile +# will cause deployment errors +# +# See the remaining OpenStack Training Labs code for more details at GitHub: +# https://github.com/openstack/openstack-manuals/tree/master/doc/training-guide/training-labs + +#Change to the root user +sudo su - +cd ~ + +#Get latest catalogs from Ubuntu +apt-get update +apt-get install -y vim + +#Copy the deployment scripts to /root +cp -avr /vagrant/Scripts . +cd Scripts +mkdir Logs + +#Execute the deployment scripts +#./auto_scripts.sh +echo "Execute PreInstall Script to Build Student Environment" +bash PreInstall/PreInstall.sh "single-node" > Logs/PreInstall.log + diff --git a/doc/training-guide/training-labs/controller.sh b/doc/training-guide/training-labs/controller.sh new file mode 100644 index 0000000000..7e9f44c6c6 --- /dev/null +++ b/doc/training-guide/training-labs/controller.sh @@ -0,0 +1,30 @@ +# compute.sh +# +# Author: Trevor Roberts Jr (VMTrooper@gmail.com) +# This script is called by the Vagrant Shell Provisioner to build the student's lab machine. +# +# Vagrant's Shell Provisioner receives deployment instructions from this file. +# Removing this file without removing the Shell Provisioner command in the Vagrantfile +# will cause deployment errors +# +# See the remaining OpenStack Training Labs code for more details at GitHub: +# https://github.com/openstack/openstack-manuals/tree/master/doc/training-guide/training-labs + +#Change to the root user +sudo su - +cd ~ + +#Get latest catalogs from Ubuntu +apt-get update +apt-get install -y vim + +#Copy the deployment scripts to /root +cp -avr /vagrant/Scripts . +cd Scripts +mkdir Logs + +#Execute the deployment scripts +#./auto_scripts.sh +echo "Execute PreInstall Script to Build Student Environment" +bash PreInstall/PreInstall.sh "single-node" > Logs/PreInstall.log + diff --git a/doc/training-guide/training-labs/network.sh b/doc/training-guide/training-labs/network.sh new file mode 100644 index 0000000000..dee6dc37e7 --- /dev/null +++ b/doc/training-guide/training-labs/network.sh @@ -0,0 +1,30 @@ +# network.sh +# +# Author: Trevor Roberts Jr (VMTrooper@gmail.com) +# This script is called by the Vagrant Shell Provisioner to build the student's lab machine. +# +# Vagrant's Shell Provisioner receives deployment instructions from this file. +# Removing this file without removing the Shell Provisioner command in the Vagrantfile +# will cause deployment errors +# +# See the remaining OpenStack Training Labs code for more details at GitHub: +# https://github.com/openstack/openstack-manuals/tree/master/doc/training-guide/training-labs + +#Change to the root user +sudo su - +cd ~ + +#Get latest catalogs from Ubuntu +apt-get update +apt-get install -y vim + +#Copy the deployment scripts to /root +cp -avr /vagrant/Scripts . +cd Scripts +mkdir Logs + +#Execute the deployment scripts +#./auto_scripts.sh +echo "Execute PreInstall Script to Build Student Environment" +bash PreInstall/PreInstall.sh "single-node" > Logs/PreInstall.log +