e732fff8fd
On RHEL8, deployment fails with a bunch of permission issue while the openshift-ansible container image tries to read files from /var/lib/mistral/openshift/openshift/inventory/. We need to add 'z' option while mounting the /var/lib/mistral/openshift volume. Change-Id: I24067f97eb36e475f873e3a3ea06a488fef95d90 Closes-Bug: #1821437
111 lines
4.0 KiB
Bash
Executable File
111 lines
4.0 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
build_default_image () {
|
|
if [ -f /usr/share/openstack-tripleo-common/common/container-images/container_image_prepare_defaults.yaml ]; then
|
|
local default_file=/usr/share/openstack-tripleo-common/common/container-images/container_image_prepare_defaults.yaml
|
|
elif [ -f ${BASH_SOURCE%/*}/../container-images/container_image_prepare_defaults.yaml ]; then
|
|
local default_file=${BASH_SOURCE%/*}/../container-images/container_image_prepare_defaults.yaml
|
|
else
|
|
echo "docker.io/openshift/origin-ansible:latest"
|
|
exit
|
|
fi
|
|
local namespace=$(awk '/openshift_namespace:/ {print $2}' $default_file)
|
|
local prefix=$(awk '/openshift_prefix:/ {print $2}' $default_file)
|
|
local tag=$(awk '/openshift_tag:/ {print $2}' $default_file)
|
|
echo ${namespace}/${prefix}-ansible:${tag}
|
|
}
|
|
|
|
OPENSHIFT_ANSIBLE_DEFAULT_IMAGE=$(build_default_image)
|
|
|
|
: ${PLAN_NAME:=openshift}
|
|
: ${CONFIG_DOWNLOAD_DIR:=}
|
|
: ${OPENSHIFT_PLAYBOOK:=}
|
|
: ${OPENSHIFT_ANSIBLE_IMAGE:=$OPENSHIFT_ANSIBLE_DEFAULT_IMAGE}
|
|
: ${OPENSHIFT_ANSIBLE_DIR:=}
|
|
|
|
usage () {
|
|
echo "Usage: $0 [options] [extra_ansible_options...]"
|
|
echo ""
|
|
echo "Options:"
|
|
echo " -i, --image the openshift-ansible image tag to use. Defaults to"
|
|
echo " $OPENSHIFT_ANSIBLE_DEFAULT_IMAGE"
|
|
echo " -d, --config-download-dir the path to the config-download directory for openshift"
|
|
echo " DEPRECATED use --plan instead"
|
|
echo " -n, --plan the plan name. Defaults to $PLAN_NAME"
|
|
echo " -p, --playbook the path of the playbook to run. Defaults to"
|
|
echo " openshift/playbook.yml in the config-download directory"
|
|
echo " --osa the path to openshift-ansible directory. Mutually"
|
|
echo " exclusive with --image"
|
|
echo " -h, --help print this help and exit"
|
|
}
|
|
|
|
OPTS=`getopt -o hd:n:i:p: --long help,config-download-dir:,plan:,image:,playbook:,osa: -- "$@"`
|
|
eval set -- "$OPTS"
|
|
|
|
while true; do
|
|
case "$1" in
|
|
-h | --help)
|
|
usage; exit ;;
|
|
-d | --config-download-dir)
|
|
echo "--config-download-dir is deprecated, use --plan instead"
|
|
shift
|
|
export CONFIG_DOWNLOAD_DIR=$1; shift ;;
|
|
-n | --plan)
|
|
shift
|
|
export PLAN_NAME=$1
|
|
shift ;;
|
|
-p | --playbook)
|
|
shift
|
|
export OPENSHIFT_PLAYBOOK=$1; shift ;;
|
|
-i | --image)
|
|
shift
|
|
export OPENSHIFT_ANSIBLE_IMAGE=$1; shift ;;
|
|
--osa)
|
|
shift
|
|
export OPENSHIFT_ANSIBLE_DIR=$1; shift ;;
|
|
--) shift ; break ;;
|
|
* ) break ;;
|
|
esac
|
|
done
|
|
|
|
if [[ -z $CONFIG_DOWNLOAD_DIR ]]; then
|
|
export CONFIG_DOWNLOAD_DIR=/var/lib/mistral/${PLAN_NAME}
|
|
fi
|
|
if [[ ! -d $CONFIG_DOWNLOAD_DIR ]]; then
|
|
echo "Config-download directory doesn't exist at ${CONFIG_DOWNLOAD_DIR}"
|
|
exit
|
|
fi
|
|
|
|
if [[ -z $OPENSHIFT_PLAYBOOK ]]; then
|
|
export OPENSHIFT_PLAYBOOK=${CONFIG_DOWNLOAD_DIR}/openshift/playbook.yml
|
|
fi
|
|
|
|
ANSIBLE_OPTS="-e @${CONFIG_DOWNLOAD_DIR}/openshift/global_vars.yml"
|
|
if [[ -f ${CONFIG_DOWNLOAD_DIR}/openshift/global_gluster_vars.yml ]]; then
|
|
ANSIBLE_OPTS="${ANSIBLE_OPTS} -e @${CONFIG_DOWNLOAD_DIR}/openshift/global_gluster_vars.yml"
|
|
fi
|
|
ANSIBLE_OPTS="${ANSIBLE_OPTS} $@"
|
|
|
|
if [ -z $OPENSHIFT_ANSIBLE_DIR ]; then
|
|
sudo podman run \
|
|
--net=host \
|
|
-u `id -u` \
|
|
-v ${CONFIG_DOWNLOAD_DIR}:${CONFIG_DOWNLOAD_DIR}:z \
|
|
-w ${CONFIG_DOWNLOAD_DIR} \
|
|
-e ANSIBLE_HOST_KEY_CHECKING=False \
|
|
-e ANSIBLE_CONFIG=${CONFIG_DOWNLOAD_DIR}/ansible.cfg \
|
|
-e INVENTORY_DIR=${CONFIG_DOWNLOAD_DIR}/openshift/inventory \
|
|
-e PLAYBOOK_FILE=${OPENSHIFT_PLAYBOOK} \
|
|
-e OPTS="${ANSIBLE_OPTS}" \
|
|
-t ${OPENSHIFT_ANSIBLE_IMAGE}
|
|
else
|
|
pushd ${CONFIG_DOWNLOAD_DIR}
|
|
ANSIBLE_HOST_KEY_CHECKING=False \
|
|
ANSIBLE_CONFIG=${CONFIG_DOWNLOAD_DIR}/ansible.cfg \
|
|
ansible-playbook \
|
|
-i ${CONFIG_DOWNLOAD_DIR}/openshift/inventory \
|
|
${ANSIBLE_OPTS} \
|
|
${OPENSHIFT_PLAYBOOK}
|
|
popd
|
|
fi
|