71 lines
2.2 KiB
Bash
71 lines
2.2 KiB
Bash
![]() |
#!/bin/bash
|
||
|
|
||
|
set -o xtrace
|
||
|
set -o errexit
|
||
|
set -o pipefail
|
||
|
|
||
|
# Enable unbuffered output for Ansible in Jenkins.
|
||
|
export PYTHONUNBUFFERED=1
|
||
|
|
||
|
function deploy_tenks_logged {
|
||
|
. /etc/kolla/admin-openrc.sh
|
||
|
|
||
|
echo "Creating IPA images for Ironic"
|
||
|
~/openstackclient-venv/bin/openstack image create --disk-format aki --container-format aki --private \
|
||
|
--file /etc/kolla/config/ironic/ironic-agent.kernel ipa.vmlinuz
|
||
|
~/openstackclient-venv/bin/openstack image create --disk-format ari --container-format ari --private \
|
||
|
--file /etc/kolla/config/ironic/ironic-agent.initramfs ipa.initramfs
|
||
|
|
||
|
# Install a trivial script for ovs-vsctl that talks to containerised Open
|
||
|
# vSwitch.
|
||
|
sudo tee /usr/bin/ovs-vsctl >/dev/null <<EOF
|
||
|
#!/usr/bin/env bash
|
||
|
|
||
|
# Script installed onto the host to fool tenks into using the containerised
|
||
|
# Open vSwitch rather than installing its own.
|
||
|
|
||
|
sudo docker exec openvswitch_vswitchd ovs-vsctl "\$@"
|
||
|
EOF
|
||
|
sudo chmod 755 /usr/bin/ovs-vsctl
|
||
|
|
||
|
# Install the Tenks venv.
|
||
|
python3 -m venv ${TENKS_VENV_PATH}
|
||
|
${TENKS_VENV_PATH}/bin/pip install -U pip
|
||
|
${TENKS_VENV_PATH}/bin/pip install ${TENKS_SRC_PATH}
|
||
|
|
||
|
local attempt
|
||
|
attempt=1
|
||
|
while ! ${TENKS_VENV_PATH}/bin/ansible-galaxy install \
|
||
|
--role-file="${TENKS_SRC_PATH}/requirements.yml" \
|
||
|
--roles-path="${TENKS_SRC_PATH}/ansible/roles/"; do
|
||
|
echo "ansible-galaxy install failed, attempt $attempt"
|
||
|
attempt=$((attempt+1))
|
||
|
if [[ $attempt -eq 10 ]]; then
|
||
|
echo "enough retrying, farewell"
|
||
|
return 1
|
||
|
fi
|
||
|
sleep 10
|
||
|
done
|
||
|
|
||
|
# Run Tenks.
|
||
|
${TENKS_VENV_PATH}/bin/ansible-playbook \
|
||
|
-vvv \
|
||
|
--inventory "${TENKS_SRC_PATH}/ansible/inventory" \
|
||
|
--extra-vars=@"$HOME/tenks.yml" \
|
||
|
"${TENKS_SRC_PATH}/ansible/deploy.yml"
|
||
|
}
|
||
|
|
||
|
function deploy_tenks {
|
||
|
echo "Configuring virtual bare metal via Tenks"
|
||
|
deploy_tenks_logged > /tmp/logs/ansible/deploy-tenks 2>&1
|
||
|
result=$?
|
||
|
if [[ $result != 0 ]]; then
|
||
|
echo "Deploying tenks failed. See ansible/deploy-tenks for details"
|
||
|
else
|
||
|
echo "Successfully deployed tenks. See ansible/deploy-tenks for details"
|
||
|
fi
|
||
|
return $result
|
||
|
}
|
||
|
|
||
|
deploy_tenks
|