Address dev environment review comments

Improves shell script quoting, and adds

set -u
set -o pipefail
This commit is contained in:
Mark Goddard 2018-02-06 12:06:00 +00:00
parent 6beb880486
commit 820f9f2977
7 changed files with 47 additions and 31 deletions

View File

@ -1,6 +1,7 @@
#!/bin/bash #!/bin/bash
set -e set -eu
set -o pipefail
# This script can be used to prepare the environment for use with kayobe. This # This script can be used to prepare the environment for use with kayobe. This
# includes setting environment variables and activating the python virtual # includes setting environment variables and activating the python virtual
@ -9,7 +10,7 @@ set -e
PARENT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PARENT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source ${PARENT}/functions source "${PARENT}/functions"
function main { function main {

View File

@ -1,6 +1,7 @@
#!/bin/bash #!/bin/bash
set -e set -eu
set -o pipefail
# Library of functions for the kayobe development environment. # Library of functions for the kayobe development environment.
@ -13,18 +14,18 @@ function config_defaults {
if [[ -e /vagrant ]]; then if [[ -e /vagrant ]]; then
KAYOBE_SOURCE_PATH_DEFAULT=/vagrant KAYOBE_SOURCE_PATH_DEFAULT=/vagrant
else else
KAYOBE_SOURCE_PATH_DEFAULT=$(pwd) KAYOBE_SOURCE_PATH_DEFAULT="$(pwd)"
fi fi
# Path to the kayobe source code repository. Typically this will be the # Path to the kayobe source code repository. Typically this will be the
# Vagrant shared directory. # Vagrant shared directory.
export KAYOBE_SOURCE_PATH=${KAYOBE_SOURCE_PATH:-$KAYOBE_SOURCE_PATH_DEFAULT} export KAYOBE_SOURCE_PATH="${KAYOBE_SOURCE_PATH:-$KAYOBE_SOURCE_PATH_DEFAULT}"
# Path to the kayobe-config repository checkout. # Path to the kayobe-config repository checkout.
export KAYOBE_CONFIG_SOURCE_PATH=${KAYOBE_CONFIG_SOURCE_PATH:-${KAYOBE_SOURCE_PATH}/config/src/kayobe-config} export KAYOBE_CONFIG_SOURCE_PATH="${KAYOBE_CONFIG_SOURCE_PATH:-${KAYOBE_SOURCE_PATH}/config/src/kayobe-config}"
# Path to the kayobe virtual environment. # Path to the kayobe virtual environment.
export KAYOBE_VENV_PATH=${KAYOBE_VENV_PATH:-~/kayobe-venv} export KAYOBE_VENV_PATH="${KAYOBE_VENV_PATH:-~/kayobe-venv}"
# Whether to build container images for the seed services. If 0, they will # Whether to build container images for the seed services. If 0, they will
# be pulled. # be pulled.
@ -40,20 +41,20 @@ function config_set {
PARENT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PARENT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source ${PARENT}/config.sh source "${PARENT}/config.sh"
} }
function config_check { function config_check {
# Check the configuration environment variables. # Check the configuration environment variables.
if [[ ! -e $KAYOBE_CONFIG_SOURCE_PATH ]]; then if [[ ! -e "$KAYOBE_CONFIG_SOURCE_PATH" ]]; then
if [[ ${KAYOBE_CONFIG_REQUIRED:-1} -eq 1 ]]; then if [[ ${KAYOBE_CONFIG_REQUIRED:-1} -eq 1 ]]; then
echo "Kayobe configuration path $KAYOBE_CONFIG_SOURCE_PATH does not exist" echo "Kayobe configuration path $KAYOBE_CONFIG_SOURCE_PATH does not exist"
return 1 return 1
fi fi
fi fi
if [[ ! -e $KAYOBE_SOURCE_PATH ]]; then if [[ ! -e "$KAYOBE_SOURCE_PATH" ]]; then
echo "Kayobe source path $KAYOBE_SOURCE_PATH does not exist" echo "Kayobe source path $KAYOBE_SOURCE_PATH does not exist"
return 1 return 1
fi fi
@ -77,17 +78,21 @@ function install_dependencies {
} }
function install_venv { function install_venv {
local venv_parent=$(dirname ${KAYOBE_VENV_PATH}) local venv_parent="$(dirname ${KAYOBE_VENV_PATH})"
if [[ ! -d $venv_parent ]]; then if [[ ! -d "$venv_parent" ]]; then
mkdir -p $venv_parent mkdir -p "$venv_parent"
fi fi
if [[ ! -f ${KAYOBE_VENV_PATH}/bin/activate ]]; then if [[ ! -f "${KAYOBE_VENV_PATH}/bin/activate" ]]; then
echo "Creating kayobe virtual environment in ${KAYOBE_VENV_PATH}" echo "Creating kayobe virtual environment in ${KAYOBE_VENV_PATH}"
virtualenv ${KAYOBE_VENV_PATH} virtualenv "${KAYOBE_VENV_PATH}"
source ${KAYOBE_VENV_PATH}/bin/activate # NOTE: Virtualenv's activate and deactivate scripts reference an
# unbound variable.
set +u
source "${KAYOBE_VENV_PATH}/bin/activate"
pip install -U pip pip install -U pip
pip install ${KAYOBE_SOURCE_PATH} pip install "${KAYOBE_SOURCE_PATH}"
deactivate deactivate
set -u
else else
echo "Using existing kayobe virtual environment in ${KAYOBE_VENV_PATH}" echo "Using existing kayobe virtual environment in ${KAYOBE_VENV_PATH}"
fi fi
@ -101,10 +106,13 @@ function is_deploy_image_built_locally {
} }
function environment_setup { function environment_setup {
source ${KAYOBE_VENV_PATH}/bin/activate # NOTE: Virtualenv's activate script references an unbound variable.
source ${KAYOBE_CONFIG_SOURCE_PATH}/kayobe-env set +u
source "${KAYOBE_VENV_PATH}/bin/activate"
set -u
source "${KAYOBE_CONFIG_SOURCE_PATH}/kayobe-env"
cd ${KAYOBE_SOURCE_PATH} cd "${KAYOBE_SOURCE_PATH}"
} }
function seed_hypervisor_deploy { function seed_hypervisor_deploy {
@ -188,7 +196,7 @@ function overcloud_deploy {
kayobe overcloud service deploy kayobe overcloud service deploy
echo "Performing post-deployment configuration" echo "Performing post-deployment configuration"
source ${KOLLA_CONFIG_PATH:-/etc/kolla}/admin-openrc.sh source "${KOLLA_CONFIG_PATH:-/etc/kolla}/admin-openrc.sh"
kayobe overcloud post configure kayobe overcloud post configure
echo "Control plane deployment complete" echo "Control plane deployment complete"

View File

@ -1,12 +1,13 @@
#!/bin/bash #!/bin/bash
set -e set -eu
set -o pipefail
# Install kayobe and its dependencies in a virtual environment. # Install kayobe and its dependencies in a virtual environment.
PARENT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PARENT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source ${PARENT}/functions source "${PARENT}/functions"
function main { function main {

View File

@ -1,6 +1,7 @@
#!/bin/bash #!/bin/bash
set -e set -eu
set -o pipefail
# Simple script to stand up a development environment for an OpenStack # Simple script to stand up a development environment for an OpenStack
# controller in a Vagrant VM using kayobe. This should be executed from within # controller in a Vagrant VM using kayobe. This should be executed from within
@ -8,7 +9,7 @@ set -e
PARENT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PARENT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source ${PARENT}/functions source "${PARENT}/functions"
function main { function main {

View File

@ -1,13 +1,14 @@
#!/bin/bash #!/bin/bash
set -e set -eu
set -o pipefail
# Simple script to stand up a development environment for a seed VM using # Simple script to stand up a development environment for a seed VM using
# kayobe. This should be executed from the hypervisor. # kayobe. This should be executed from the hypervisor.
PARENT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PARENT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source ${PARENT}/functions source "${PARENT}/functions"
function main { function main {

View File

@ -1,13 +1,14 @@
#!/bin/bash #!/bin/bash
set -e set -eu
set -o pipefail
# Simple script to stand up a development environment for a seed hypervisor # Simple script to stand up a development environment for a seed hypervisor
# using kayobe. This should be executed from the hypervisor. # using kayobe. This should be executed from the hypervisor.
PARENT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PARENT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source ${PARENT}/functions source "${PARENT}/functions"
function main { function main {

View File

@ -19,10 +19,13 @@ Preparation
=========== ===========
First, ensure that Vagrant is installed and correctly configured to use First, ensure that Vagrant is installed and correctly configured to use
virtual box. Also install the following vagrant plugins:: the required provider. Also install the following vagrant plugin::
vagrant plugin install vagrant-reload
If using the VirtualBox provider, install the following vagrant plugin::
vagrant plugin install vagrant-vbguest vagrant plugin install vagrant-vbguest
vagrant plugin install vagrant-reload
Note: if using Ubuntu 16.04 LTS, you may be unable to install any plugins. To Note: if using Ubuntu 16.04 LTS, you may be unable to install any plugins. To
work around this install the upstream version from www.virtualbox.org. work around this install the upstream version from www.virtualbox.org.