tripleo-common/scripts/bootstrap_host_exec
Michele Baldessari 3345557d7b Lowercase any hostname comparisons in bootstrap_* scripts
If you deploy a stack with mixed-case hostnames things will break
because no task that is supposed to run on boostrap nodes will run
due to the following code:
HOSTNAME=$(/bin/hostname -s)
SERVICE_NODEID=$(/bin/hiera -c /etc/puppet/hiera.yaml
"${SERVICE_NAME}_short_bootstrap_node_name")
if [[ "$HOSTNAME" == "$SERVICE_NODEID" ]]; then
...

The hiera key might contain mixed-case letters whereas the hostname
won't and the end result is going to be that no bootstrap tasks
will run on any nodes and, amongst other things, no database tables
will be created, making all services unusable.

Since we use bash explicitely we can leverage the ${var,,} expression
for this.

Change-Id: Ie240b8a4217827dd8ade82479a828817d63143ba
Related-Bug: #1773219
2018-05-28 10:52:58 +02:00

20 lines
512 B
Bash
Executable File

#!/bin/bash
set -e
SERVICE_NAME=$1
if [ -z "$SERVICE_NAME" ]; then
echo "Please supply a valid service name."
exit 1
fi
shift
if [ -z "$*" ]; then
echo "Please supply a valid 'command' to run as an argument."
exit 1
fi
HOSTNAME=$(/bin/hostname -s)
SERVICE_NODEID=$(/bin/hiera -c /etc/puppet/hiera.yaml "${SERVICE_NAME}_short_bootstrap_node_name")
if [[ "${HOSTNAME,,}" == "${SERVICE_NODEID,,}" ]]; then
eval $*
else
echo "Skipping execution since this is not the bootstrap node for this service."
fi