#!/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 function 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_CEILOMETER_SNMPD_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