Always setup environment in bifrost-cli and make it less verbose
For upgrades we need bifrost-cli to always try to setup environment (e.g. in case of a different ansible version). To avoid polluting the output, make `set -x` conditional on a new variable BIFROST_TRACE. Change-Id: I8caea6be0962db0e7019d0aa1484ef2424b7629e
This commit is contained in:
parent
e026d0d110
commit
a874c7ac73
@ -65,14 +65,11 @@ def ansible(playbook, inventory, verbose=False, env=None, extra_vars=None,
|
|||||||
|
|
||||||
|
|
||||||
def env_setup(args):
|
def env_setup(args):
|
||||||
if os.path.exists(VENV):
|
log('Installing dependencies and preparing an environment in', VENV,
|
||||||
log(VENV, 'exists, skipping environment preparation',
|
only_if=args.debug)
|
||||||
only_if=args.debug)
|
env = get_env({'BIFROST_TRACE': str(args.debug).lower(),
|
||||||
return
|
'BIFROST_HIDE_PROMPT': 'true'})
|
||||||
|
subprocess.check_call(["bash", "scripts/env-setup.sh"], env=env, cwd=BASE)
|
||||||
log('Installing dependencies and preparing an environment in', VENV)
|
|
||||||
subprocess.check_call(["bash", "scripts/env-setup.sh"],
|
|
||||||
env=get_env(), cwd=BASE)
|
|
||||||
|
|
||||||
|
|
||||||
def get_release(release):
|
def get_release(release):
|
||||||
|
@ -19,6 +19,7 @@ ANSIBLE_SOURCE_PATH=${ANSIBLE_SOURCE_PATH:-ansible${ANSIBLE_PIP_VERSION}}
|
|||||||
BIFROST_COLLECTIONS_PATHS=${ANSIBLE_COLLECTIONS_PATHS:-}
|
BIFROST_COLLECTIONS_PATHS=${ANSIBLE_COLLECTIONS_PATHS:-}
|
||||||
PLAYBOOKS_LIBRARY_PATH=$(dirname $0)/../playbooks/library
|
PLAYBOOKS_LIBRARY_PATH=$(dirname $0)/../playbooks/library
|
||||||
|
|
||||||
|
echo "Installing/upgrading Ansible"
|
||||||
${PIP} install "${ANSIBLE_SOURCE_PATH}"
|
${PIP} install "${ANSIBLE_SOURCE_PATH}"
|
||||||
ANSIBLE=${VENV}/bin/ansible
|
ANSIBLE=${VENV}/bin/ansible
|
||||||
ANSIBLE_GALAXY=${VENV}/bin/ansible-galaxy
|
ANSIBLE_GALAXY=${VENV}/bin/ansible-galaxy
|
||||||
@ -62,8 +63,10 @@ if [ ! -e "$(dirname $0)/../playbooks/collections" ]; then
|
|||||||
ln -s ${ANSIBLE_COLLECTIONS_PATHS} "$(dirname $0)/../playbooks/collections"
|
ln -s ${ANSIBLE_COLLECTIONS_PATHS} "$(dirname $0)/../playbooks/collections"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo
|
if [[ "${BIFROST_HIDE_PROMPT:-false}" != true ]]; then
|
||||||
echo "To use bifrost, do"
|
echo
|
||||||
echo "source ${VENV}/bin/activate"
|
echo "To use bifrost, do"
|
||||||
echo "Then run playbooks as normal."
|
echo "source ${VENV}/bin/activate"
|
||||||
echo
|
echo "Then run playbooks as normal."
|
||||||
|
echo
|
||||||
|
fi
|
||||||
|
@ -1,5 +1,10 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -xeu
|
|
||||||
|
set -eu
|
||||||
|
|
||||||
|
if [[ "${BIFROST_TRACE:-}" == true ]]; then
|
||||||
|
set -x
|
||||||
|
fi
|
||||||
|
|
||||||
declare -A PKG_MAP
|
declare -A PKG_MAP
|
||||||
|
|
||||||
@ -14,6 +19,8 @@ CHECK_CMD_PKGS=(
|
|||||||
python3-pip
|
python3-pip
|
||||||
)
|
)
|
||||||
|
|
||||||
|
echo Detecting package manager
|
||||||
|
|
||||||
source /etc/os-release || source /usr/lib/os-release
|
source /etc/os-release || source /usr/lib/os-release
|
||||||
case ${ID,,} in
|
case ${ID,,} in
|
||||||
*suse*)
|
*suse*)
|
||||||
@ -58,6 +65,9 @@ case ${ID,,} in
|
|||||||
rhel|fedora|centos)
|
rhel|fedora|centos)
|
||||||
OS_FAMILY="RedHat"
|
OS_FAMILY="RedHat"
|
||||||
PKG_MANAGER=$(which dnf || which yum)
|
PKG_MANAGER=$(which dnf || which yum)
|
||||||
|
if [[ "${BIFROST_TRACE:-}" != true ]]; then
|
||||||
|
PKG_MANAGER="$PKG_MANAGER --quiet"
|
||||||
|
fi
|
||||||
INSTALLER_CMD="sudo -H -E ${PKG_MANAGER} -y install"
|
INSTALLER_CMD="sudo -H -E ${PKG_MANAGER} -y install"
|
||||||
CHECK_CMD="rpm -q"
|
CHECK_CMD="rpm -q"
|
||||||
PKG_MAP=(
|
PKG_MAP=(
|
||||||
@ -72,6 +82,8 @@ case ${ID,,} in
|
|||||||
*) echo "ERROR: Supported package manager not found. Supported: apt, dnf, yum, zypper"; exit 1;;
|
*) echo "ERROR: Supported package manager not found. Supported: apt, dnf, yum, zypper"; exit 1;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
echo Installing Python and PIP
|
||||||
|
|
||||||
for pkg in ${CHECK_CMD_PKGS[@]}; do
|
for pkg in ${CHECK_CMD_PKGS[@]}; do
|
||||||
if ! $(${CHECK_CMD} ${PKG_MAP[$pkg]} &>/dev/null); then
|
if ! $(${CHECK_CMD} ${PKG_MAP[$pkg]} &>/dev/null); then
|
||||||
${INSTALLER_CMD} ${PKG_MAP[$pkg]}
|
${INSTALLER_CMD} ${PKG_MAP[$pkg]}
|
||||||
@ -86,23 +98,36 @@ if [ "${#EXTRA_PKG_DEPS[@]}" -ne 0 ]; then
|
|||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "NOTICE: Using virtualenv for this installation."
|
|
||||||
if [ ! -f ${VENV}/bin/activate ]; then
|
if [ ! -f ${VENV}/bin/activate ]; then
|
||||||
|
echo "Creating a virtual environment"
|
||||||
|
|
||||||
# only create venv if one doesn't exist
|
# only create venv if one doesn't exist
|
||||||
sudo -H -E python3 -m venv --system-site-packages ${VENV}
|
sudo -H -E python3 -m venv --system-site-packages ${VENV}
|
||||||
sudo -H -E chown -R ${USER} ${VENV}
|
sudo -H -E chown -R ${USER} ${VENV}
|
||||||
|
else
|
||||||
|
echo "Virtual environment exists, skipping creation"
|
||||||
|
|
||||||
|
# NOTE(dtantsur): place here any actions required to upgrade existing
|
||||||
|
# virtual environments.
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Note(cinerama): activate is not compatible with "set -u";
|
# Note(cinerama): activate is not compatible with "set -u";
|
||||||
# disable it just for this line.
|
# disable it just for this line.
|
||||||
set +u
|
set +ux
|
||||||
. ${VENV}/bin/activate
|
. ${VENV}/bin/activate
|
||||||
set -u
|
set -u
|
||||||
|
if [[ "${BIFROST_TRACE:-}" == true ]]; then
|
||||||
|
set -x
|
||||||
|
fi
|
||||||
VIRTUAL_ENV=${VENV}
|
VIRTUAL_ENV=${VENV}
|
||||||
|
|
||||||
# If we're using a venv, we need to work around sudo not
|
# If we're using a venv, we need to work around sudo not
|
||||||
# keeping the path even with -E.
|
# keeping the path even with -E.
|
||||||
PYTHON="python3"
|
PYTHON="python3"
|
||||||
PIP="${PYTHON} -m pip"
|
PIP="${PYTHON} -m pip"
|
||||||
|
if [[ "${BIFROST_TRACE:-}" != true ]]; then
|
||||||
|
PIP="$PIP --quiet"
|
||||||
|
fi
|
||||||
|
|
||||||
$PYTHON << EOF
|
$PYTHON << EOF
|
||||||
import pip
|
import pip
|
||||||
@ -112,10 +137,10 @@ EOF
|
|||||||
|
|
||||||
export PIP_OPTS="--upgrade-strategy only-if-needed"
|
export PIP_OPTS="--upgrade-strategy only-if-needed"
|
||||||
|
|
||||||
# Install the rest of required packages using bindep
|
echo "Installing bindep"
|
||||||
${PIP} install bindep
|
${PIP} install bindep
|
||||||
|
|
||||||
echo "Using Bindep to install binary dependencies..."
|
echo "Using Bindep to install binary dependencies"
|
||||||
# bindep returns 1 if packages are missing
|
# bindep returns 1 if packages are missing
|
||||||
bindep -b &> /dev/null || ${INSTALLER_CMD} $(bindep -b)
|
bindep -b &> /dev/null || ${INSTALLER_CMD} $(bindep -b)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user