tripleo-incubator/scripts/setup-undercloud-passwords
Ben Nemec 449ae5c167 Allow adding passwords in setup-*-passwords
By default we don't overwrite password files when running devtest,
which means that when a new password is needed the existing
password files must be deleted and regenerated or the new password
will not exist.  This change checks for the existence of each
password individually so that new passwords can simply be appended
to the password files.

Closes-Bug: #1314615

Change-Id: I746749c6cc07e7b43bd3bc327b62098d72e317cf
2014-04-30 18:03:30 +00:00

93 lines
2.4 KiB
Bash
Executable File

#!/bin/bash
#
# Copyright 2013 Red Hat, Inc.
# All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
set -e
set -o pipefail
SCRIPT_NAME=$(basename $0)
SCRIPT_HOME=$(dirname $0)
function show_options () {
echo "Usage: $SCRIPT_NAME [options] FILENAME"
echo
echo "Generate passwords for devtest and write them out to a file"
echo "that can be sourced."
echo
echo "Options:"
echo " -f, --file -- Noop. For backwards compatibility only"
echo " -o, --overwrite -- Overwrite file if it already exists."
exit $1
}
FILE=
TEMP=`getopt -o hof -l help,overwrite,file -n $SCRIPT_NAME -- "$@"`
if [ $? != 0 ] ; then echo "Terminating..." >&2 ; exit 1 ; fi
# Note the quotes around `$TEMP': they are essential!
eval set -- "$TEMP"
while true ; do
case "$1" in
-f | --file) shift 1 ;;
-o | --overwrite) OVERWRITE=--overwrite; shift 1 ;;
-h | --help) show_options 0;;
--) shift ; break ;;
*) echo "Error: unsupported option $1." ; exit 1 ;;
esac
done
FILE=${FILE:-$1}
if [ -z "$FILE" ]; then
echo "ERROR: Must provide a filename"
exit 1
fi
OVERWRITE=${OVERWRITE:-""}
touch $FILE
# Make the file secure as reasonably possible.
chmod 0600 $FILE
if [ -n "$OVERWRITE" ]; then
echo -n "" > $FILE
fi
generate_password() {
local name=$1
if [ -z "$(grep "^$name=" $FILE)" ]; then
echo "$name=$(os-make-password)" >> $FILE
else
echo "Password $name in $FILE already exists, not overwriting."
echo "To overwrite all passwords in $FILE specify -o."
fi
}
PASSWORD_LIST="UNDERCLOUD_ADMIN_TOKEN
UNDERCLOUD_ADMIN_PASSWORD
UNDERCLOUD_CEILOMETER_PASSWORD
UNDERCLOUD_GLANCE_PASSWORD
UNDERCLOUD_HEAT_PASSWORD
UNDERCLOUD_NEUTRON_PASSWORD
UNDERCLOUD_NOVA_PASSWORD
UNDERCLOUD_IRONIC_PASSWORD
UNDERCLOUD_TUSKAR_PASSWORD"
for name in $PASSWORD_LIST; do
generate_password $name
done