kayobe-config/kayobe-env
Pierre Riteau 2af2c3a3b5 Support reading Kayobe environment name from file
If using separate branches for each environment, it can be useful to
read the environment name from a file committed to each branch. Or, if
sharing the same branch for all environments, it can be useful to set
the default environment to one with lower impact, e.g. dev or staging.

If no --environment option is specified and a .environment file exists
at the root of the directory, use its content as KAYOBE_ENVIRONMENT.

Change-Id: I22b2b466e47a3b4d96931d754a4de7544f0ada5d
2021-03-31 14:56:53 +02:00

72 lines
2.2 KiB
Plaintext

# Copyright (c) 2017 StackHPC Ltd.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
KAYOBE_CONFIG_ROOT=$(dirname $(realpath ${BASH_SOURCE[0]:-${(%):-%x}}))
echo "Using Kayobe config from $KAYOBE_CONFIG_ROOT"
export KAYOBE_CONFIG_PATH=$KAYOBE_CONFIG_ROOT/etc/kayobe
export KOLLA_CONFIG_PATH=$KAYOBE_CONFIG_ROOT/etc/kolla
# NOTE: These paths can be modified depending on the local environment.
# These defaults are set based on the following directory structure:
#
# ${base_path}/
# src/
# kayobe/
# kayobe-config/
# kolla-ansible/
# venvs/
# kayobe/
# kolla-ansible/
base_path=$(realpath $KAYOBE_CONFIG_ROOT/../../)
export KOLLA_SOURCE_PATH=${KOLLA_SOURCE_PATH:-${base_path}/src/kolla-ansible}
export KOLLA_VENV_PATH=${KOLLA_VENV_PATH:-${base_path}/venvs/kolla-ansible}
function check_and_export_env {
# Look for existing Kayobe environments
if [ -d "${KAYOBE_CONFIG_PATH}/environments" ]; then
if [ -d "${KAYOBE_CONFIG_PATH}/environments/${kayobe_env}" ]; then
export KAYOBE_ENVIRONMENT="${kayobe_env}"
echo "Using Kayobe environment ${KAYOBE_ENVIRONMENT}"
return 0
else
echo "Unable to find Kayobe environment ${kayobe_env} in ${KAYOBE_CONFIG_PATH}/environments"
return 1
fi
else
echo "Cannot find environments folder in ${KAYOBE_CONFIG_PATH}"
return 1
fi
}
function usage {
echo "usage: ${BASH_SOURCE[0]:-${(%):-%x}} [--environment <env-name>]"
return 1
}
if [ "$#" -ge 1 ]; then
if [ "$1" = "--environment" -a "$#" -eq 2 ]; then
kayobe_env="$2"
check_and_export_env
else
usage
fi
return $?
fi
if [[ -f "$KAYOBE_CONFIG_ROOT/.environment" ]]; then
kayobe_env=$(cat "$KAYOBE_CONFIG_ROOT/.environment")
check_and_export_env
fi