Allow the Getting Started script to run non-interactively

Related: #84

Signed-off-by: Zane Bitter <zbitter@redhat.com>
This commit is contained in:
Zane Bitter 2012-05-14 16:03:49 +02:00
parent 0cd65f8cac
commit 645d093c45
7 changed files with 56 additions and 42 deletions

View File

@ -311,6 +311,9 @@ def create_options(parser):
help="Print more verbose output")
parser.add_option('-d', '--debug', default=False, action="store_true",
help="Print more verbose output")
parser.add_option('-y', '--yes', default=False, action="store_true",
help="Don't prompt for user input; assume the answer to "
"every question is 'yes'.")
parser.add_option('-H', '--host', metavar="ADDRESS", default="0.0.0.0",
help="Address of heat API host. "
"Default: %default")

View File

@ -29,7 +29,7 @@ Options:
--help | -h
Print usage information.
--heatpw <pw> | -n <pw>
--password <pw> | -p <pw>
Specify the password for the 'heat' MySQL user that will
use to connect to the 'heat' MySQL database. By default,
the password 'heat' will be used.
@ -66,11 +66,6 @@ MYSQL_HEAT_PW=${MYSQL_HEAT_PW_DEFAULT}
HEAT_CONFIG="/etc/heat/heat-engine.conf"
ASSUME_YES=""
if [ $# -eq 0 ]
then
usage
fi
case "$1" in
rpm)
echo "Installing on an RPM system."
@ -90,6 +85,9 @@ case "$1" in
SERVICE_STATUS="service $SERVICE_MYSQLD status"
SERVICE_ENABLE=""
;;
*)
usage
;;
esac
while [ $# -gt 0 ]
@ -98,7 +96,7 @@ do
-h|--help)
usage
;;
-n|--novapw)
-p|--password)
shift
MYSQL_HEAT_PW=${1}
;;
@ -111,7 +109,6 @@ do
;;
*)
# ignore
shift
;;
esac
shift

View File

@ -34,7 +34,7 @@ Installing OpenStack on Fedora 16
Note: on Fedora 16 you have to enable the `Preview Repository`_ to install the required OpenStack Essex release.
A script called "``openstack``" in the tools directory of the repository will install and start OpenStack for you on Fedora 16/17::
./tools/openstack install
./tools/openstack install -y -r ${MYSQL_ROOT_PASSWORD}
If you use this method, you will need to manually create a guest network. How this is done depends on your environment. An example network create operation:
@ -90,9 +90,9 @@ Setup the MySQL database for Heat
::
./bin/heat-db-setup rpm
heat-db-setup rpm -y -r ${MYSQL_ROOT_PASSWORD}
Note: the first argument is either ``rpm`` for RPM-based distros (such as Fedora) or ``deb`` for Debian-based distros (such as Ubuntu).
Note: the first argument is either ``rpm`` for RPM-based distros (such as Fedora) or ``deb`` for Debian-based distros (such as Ubuntu). To prompt for confirmation when e.g. installing MySQL Server, omit the ``-y`` option. Run ``heat-db-setup --help`` for detailed documentation.
Register heat with keystone
---------------------------
@ -128,7 +128,7 @@ Create a JEOS
::
sudo -E heat jeos_create F16 x86_64 cfntools
sudo -E heat -y jeos_create F16 x86_64 cfntools
Note: The ``-E`` option to ``sudo`` preserves the environment, specifically the keystone credentials, when ``jeos_create`` is run as root.

View File

@ -178,7 +178,7 @@ def jeos_create(options, arguments, jeos_path, cfntools_path):
if image['name'] == distro + '-' + arch + '-' + instance_type:
image_registered = True
runoz = None
runoz = options.yes and 'y' or None
if os.access(qcow2_filename, os.R_OK):
while runoz not in ('y', 'n'):
runoz = raw_input('An existing JEOS was found on disk.' \

View File

@ -1,8 +1,26 @@
#!/bin/bash
cat << EOF | mysql -u root -p
DROP USER 'heat'@'localhost';
DROP USER 'heat'@'%';
DROP DATABASE heat;
DATABASE=heat
while [ $# -gt 0 ]; do
case $1 in
heat|nova|keystone|glance)
DATABASE=$1
;;
-r|--rootpw)
shift
MYSQL_ROOT_PW_ARG="--password=$1"
;;
*)
;;
esac
shift
done
cat << EOF | mysql -u root ${MYSQL_ROOT_PW_ARG}
DROP USER '${DATABASE}'@'localhost';
DROP USER '${DATABASE}'@'%';
DROP DATABASE ${DATABASE};
flush privileges;
EOF

View File

@ -7,6 +7,7 @@
# sleep 1 = systemd's definition of start is different from mine
BASE_DIR=`dirname $0`
action=$1
if [ -z "$action" ]
@ -72,18 +73,9 @@ function os_erase() {
sudo systemctl start mysqld.service
sleep 1
cat << EOF | mysql -u root -p
DROP USER 'nova'@'localhost';
DROP USER 'nova'@'%';
DROP USER 'keystone'@'localhost';
DROP USER 'keystone'@'%';
DROP USER 'glance'@'localhost';
DROP USER 'glance'@'%';
DROP DATABASE nova;
DROP DATABASE keystone;
DROP DATABASE glance;
flush privileges;
EOF
$BASE_DIR/heat-db-drop nova $*
$BASE_DIR/heat-db-drop keystone $*
$BASE_DIR/heat-db-drop glance $*
sudo vgchange -an nova-volumes
sudo losetup -d /dev/loop0
@ -100,9 +92,9 @@ function os_install() {
sudo systemctl start mysqld.service
sleep 1
# Configure the databases
sudo openstack-nova-db-setup
sudo openstack-glance-db-setup
sudo openstack-keystone-db-setup
sudo openstack-nova-db-setup $*
sudo openstack-glance-db-setup $*
sudo openstack-keystone-db-setup $*
# Create a keystone RC file
mkdir -p $HOME/.openstack
@ -143,17 +135,18 @@ EOF
os_start
sleep 1
echo "Installation Complete."
echo "Testing nova and glance. If any errors are displayed, the install failed."
echo "Testing nova and glance. If any errors are displayed, the install failed..."
nova flavor-list
glance index
echo
echo "note: This tool does not create a network. Creating a network"
echo "depends on your environment. An example network create operation:"
echo
echo " sudo nova-manage network create demonet 10.0.0.0/24 1 256 --bridge=demonetbr0"
echo
echo "The network range here, should *not* be the one used on your existing physical network."
echo "It should be a range dedicated for the network that OpenStack will configure. So if"
echo "10.0.0.0/24 clashes with your local network, pick another range."
echo -e "The network range here should *not* be one used on your existing physical\n network."
echo "It should be a range dedicated for the network that OpenStack will configure."
echo "If 10.0.0.0/24 clashes with your local network, pick another range."
}
@ -167,10 +160,12 @@ case $action in
os_stop
;;
erase)
os_erase
shift
os_erase $*
;;
install)
os_install
shift
os_install $*
;;
status)
os_status

View File

@ -1,8 +1,9 @@
#!/bin/bash
TOOLS_DIR=`dirname $0`
if [ "$1" = "-y" ]; then
if [ "$1" = "-y" ] || [ "$1" = "--yes" ]; then
SKIP_ASK=y
shift
fi
user_wants() {
@ -31,12 +32,12 @@ if [ -n "$HEAT_PIDS" ]; then
fi
if user_wants 'Drop Heat database tables?'; then
$TOOLS_DIR/heat-db-drop
$TOOLS_DIR/heat-db-drop $*
echo 1>&2
fi
if user_wants 'Erase OpenStack installation?'; then
$TOOLS_DIR/openstack erase
$TOOLS_DIR/openstack erase $*
echo 1>&2
fi