#!/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} \ -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