From 0caf4cf52e39191b83ca7e3fc050c00fdebfa306 Mon Sep 17 00:00:00 2001 From: Roger Luethi Date: Tue, 17 Jun 2014 11:44:15 +0200 Subject: [PATCH] Add and enable Vagrant script This changeset adds vagrant/run_scripts.sh, a script executed by the Vagrant shell provisioner inside the node VM. run_scripts.sh executes the scripts enabled in: config/scripts.nodeinit_vagrant config/scripts.ubuntu config/scripts.$HOSTNAME Note that while Vagrant calls run_scripts.sh through symlinks named after the nodes (controller.sh, network.sh, compute.sh), this has no effect because run_scripts.sh relies on the hostname to select the configuration. The symlinks (and the Vagrantfile section that calls them) can be removed once we are reasonably sure that we don't want to have node-specific scripts for Vagrant on the host-side. Partial-Bug: 1312764 Implements: blueprint openstack-training-labs Change-Id: Ia5cfee0acddae26bd41e39b9185ed3d5990539f6 --- labs/Vagrantfile | 4 ++-- labs/scripts/vagrant/allinone.sh | 1 + labs/scripts/vagrant/compute.sh | 1 + labs/scripts/vagrant/controller.sh | 1 + labs/scripts/vagrant/network.sh | 1 + labs/scripts/vagrant/run_scripts.sh | 21 +++++++++++++++++++++ 6 files changed, 27 insertions(+), 2 deletions(-) create mode 120000 labs/scripts/vagrant/allinone.sh create mode 120000 labs/scripts/vagrant/compute.sh create mode 120000 labs/scripts/vagrant/controller.sh create mode 120000 labs/scripts/vagrant/network.sh create mode 100644 labs/scripts/vagrant/run_scripts.sh diff --git a/labs/Vagrantfile b/labs/Vagrantfile index dc00deea..a03fe278 100644 --- a/labs/Vagrantfile +++ b/labs/Vagrantfile @@ -80,8 +80,8 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| 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" + # Run the shell provisioning script file (as root) + box.vm.provision :shell, :path => "scripts/vagrant/#{prefix}.sh" # Advanced VirtualBox settings box.vm.provider :virtualbox do |vbox| # Single node resource allocations; will be more selective for diff --git a/labs/scripts/vagrant/allinone.sh b/labs/scripts/vagrant/allinone.sh new file mode 120000 index 00000000..f531795a --- /dev/null +++ b/labs/scripts/vagrant/allinone.sh @@ -0,0 +1 @@ +run_scripts.sh \ No newline at end of file diff --git a/labs/scripts/vagrant/compute.sh b/labs/scripts/vagrant/compute.sh new file mode 120000 index 00000000..f531795a --- /dev/null +++ b/labs/scripts/vagrant/compute.sh @@ -0,0 +1 @@ +run_scripts.sh \ No newline at end of file diff --git a/labs/scripts/vagrant/controller.sh b/labs/scripts/vagrant/controller.sh new file mode 120000 index 00000000..f531795a --- /dev/null +++ b/labs/scripts/vagrant/controller.sh @@ -0,0 +1 @@ +run_scripts.sh \ No newline at end of file diff --git a/labs/scripts/vagrant/network.sh b/labs/scripts/vagrant/network.sh new file mode 120000 index 00000000..f531795a --- /dev/null +++ b/labs/scripts/vagrant/network.sh @@ -0,0 +1 @@ +run_scripts.sh \ No newline at end of file diff --git a/labs/scripts/vagrant/run_scripts.sh b/labs/scripts/vagrant/run_scripts.sh new file mode 100644 index 00000000..20f67a0f --- /dev/null +++ b/labs/scripts/vagrant/run_scripts.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash +set -o errexit + +# Shell provisioning script is renamed and copied to /tmp before being run as +# root +TOP_DIR=/vagrant +source "$TOP_DIR/config/paths" +source "$LIB_DIR/functions.guest" + +clean_dir "$LOG_DIR" + +exec_logpath "$LOG_DIR/$HOSTNAME.log" + +# The Vagrantfile uses precise, so we know it's Ubuntu +for CONFIG_FILE in "scripts.nodeinit_vagrant" "scripts.ubuntu" "scripts.$HOSTNAME"; do + echo "Config file $CONFIG_FILE" + get_script_paths_from_config "$CONFIG_FILE" | while read SCR_PATH; do + echo "$SCR_PATH" + as_root_exec_script "$SCR_PATH" + done +done