From 2dbde4ad8e2dfdc89701cae48a1fc77f5489ddda Mon Sep 17 00:00:00 2001 From: Ryan Hallisey <rhallise@redhat.com> Date: Mon, 22 Jun 2015 15:29:54 -0400 Subject: [PATCH] Add option to not run db sync Database syncs should not be required every time a container starts. We can default database startup to true, but give the option to set it to false. Change-Id: Ib76876b2671f6c31f4511412efd3a438ec78f01f Closes-bug: #1467576 --- .../common/designate/designate-central/start.sh | 4 ++-- docker/common/glance/glance-registry/start.sh | 9 ++++++--- docker/common/heat/heat-engine/start.sh | 9 ++++++--- docker/common/keystone/start.sh | 6 +++--- .../nova-controller/nova-conductor/start.sh | 11 +++++++---- docs/integration-guide.md | 8 ++++++-- tools/genenv | 15 +++++++++++++-- 7 files changed, 43 insertions(+), 19 deletions(-) diff --git a/docker/common/designate/designate-central/start.sh b/docker/common/designate/designate-central/start.sh index fef7e23532..44cf89130b 100755 --- a/docker/common/designate/designate-central/start.sh +++ b/docker/common/designate/designate-central/start.sh @@ -5,13 +5,13 @@ set -e . /opt/kolla/config-designate.sh check_required_vars MARIADB_SERVICE_HOST DB_ROOT_PASSWORD DESIGNATE_DB_NAME \ - DESIGNATE_DB_USER DESIGNATE_DB_PASSWORD DESIGNATE_INITDB + DESIGNATE_DB_USER DESIGNATE_DB_PASSWORD INIT_DESIGNATE_DB fail_unless_db CONF=/etc/designate/designate.conf -if [ "${DESIGNATE_INITDB}" == "true" ]; then +if [ "${INIT_DESIGNATE_DB}" == "true" ]; then echo "Configuring database" mysql -h ${MARIADB_SERVICE_HOST} -u root -p"${DB_ROOT_PASSWORD}" mysql <<EOF CREATE DATABASE IF NOT EXISTS ${DESIGNATE_DB_NAME}; diff --git a/docker/common/glance/glance-registry/start.sh b/docker/common/glance/glance-registry/start.sh index 5f590fb1cc..6b12d8fee9 100755 --- a/docker/common/glance/glance-registry/start.sh +++ b/docker/common/glance/glance-registry/start.sh @@ -5,17 +5,20 @@ set -e . /opt/kolla/kolla-common.sh . /opt/kolla/config-glance.sh -check_required_vars GLANCE_DB_NAME GLANCE_DB_USER GLANCE_DB_PASSWORD +check_required_vars GLANCE_DB_NAME GLANCE_DB_USER GLANCE_DB_PASSWORD \ + INIT_GLANCE_DB # lets wait for the DB to be available wait_for 25 1 check_for_db -mysql -h ${MARIADB_SERVICE_HOST} -u root -p${DB_ROOT_PASSWORD} mysql <<EOF +if [ "${INIT_GLANCE_DB}" == "true" ]; then + mysql -h ${MARIADB_SERVICE_HOST} -u root -p${DB_ROOT_PASSWORD} mysql <<EOF CREATE DATABASE IF NOT EXISTS ${GLANCE_DB_NAME} DEFAULT CHARACTER SET utf8; GRANT ALL PRIVILEGES ON ${GLANCE_DB_NAME}.* TO '${GLANCE_DB_USER}'@'%' IDENTIFIED BY '${GLANCE_DB_PASSWORD}' EOF -/usr/bin/glance-manage db_sync + /usr/bin/glance-manage db_sync +fi exec /usr/bin/glance-registry diff --git a/docker/common/heat/heat-engine/start.sh b/docker/common/heat/heat-engine/start.sh index 2dfc78e928..531b693752 100755 --- a/docker/common/heat/heat-engine/start.sh +++ b/docker/common/heat/heat-engine/start.sh @@ -3,15 +3,18 @@ . /opt/kolla/kolla-common.sh . /opt/kolla/config-heat.sh -check_required_vars HEAT_DB_NAME HEAT_DB_USER HEAT_DB_PASSWORD +check_required_vars HEAT_DB_NAME HEAT_DB_USER HEAT_DB_PASSWORD \ + INIT_HEAT_DB fail_unless_db -mysql -h ${MARIADB_SERVICE_HOST} -u root -p${DB_ROOT_PASSWORD} mysql <<EOF +if [ "${INIT_HEAT_DB}" == "true" ]; then + mysql -h ${MARIADB_SERVICE_HOST} -u root -p${DB_ROOT_PASSWORD} mysql <<EOF CREATE DATABASE IF NOT EXISTS ${HEAT_DB_NAME} DEFAULT CHARACTER SET utf8; GRANT ALL PRIVILEGES ON ${HEAT_DB_NAME}.* TO '${HEAT_DB_USER}'@'%' IDENTIFIED BY '${HEAT_DB_PASSWORD}' EOF -/usr/bin/heat-manage db_sync + /usr/bin/heat-manage db_sync +fi exec /usr/bin/heat-engine diff --git a/docker/common/keystone/start.sh b/docker/common/keystone/start.sh index ca9fb22666..2eb0f8c48b 100755 --- a/docker/common/keystone/start.sh +++ b/docker/common/keystone/start.sh @@ -14,7 +14,7 @@ echo "Running the kolla-common script" : ${KEYSTONE_ADMIN_PASSWORD:=password} : ${KEYSTONE_ADMIN_TOKEN:=changeme} # DB Settings -: ${INIT_DB:=true} +: ${INIT_KEYSTONE_DB:=true} : ${KEYSTONE_DB_NAME:=keystone} : ${KEYSTONE_DB_USER:=keystone} : ${DB_ROOT_PASSWORD:=password} @@ -42,7 +42,7 @@ echo "Checking for required variables" check_required_vars KEYSTONE_ADMIN_TOKEN KEYSTONE_DB_PASSWORD \ KEYSTONE_ADMIN_PASSWORD ADMIN_TENANT_NAME \ KEYSTONE_PUBLIC_SERVICE_HOST KEYSTONE_ADMIN_SERVICE_HOST \ - PUBLIC_IP + PUBLIC_IP INIT_KEYSTONE_DB dump_vars # Setup the Keystone DB @@ -126,7 +126,7 @@ chmod -R o-rwx /etc/keystone/ssl # Initialize the Keystone DB echo "Initializing Keystone DB" -if [ "${INIT_DB}" == "true" ] ; then +if [ "${INIT_KEYSTONE_DB}" == "true" ] ; then su -s /bin/bash -c "keystone-manage db_sync" keystone fi diff --git a/docker/common/nova-controller/nova-conductor/start.sh b/docker/common/nova-controller/nova-conductor/start.sh index 575e7ff6cc..3bba8cf3a0 100755 --- a/docker/common/nova-controller/nova-conductor/start.sh +++ b/docker/common/nova-controller/nova-conductor/start.sh @@ -4,7 +4,8 @@ set -e . /opt/kolla/config-nova.sh -check_required_vars NOVA_DB_NAME NOVA_DB_USER NOVA_DB_PASSWORD +check_required_vars NOVA_DB_NAME NOVA_DB_USER NOVA_DB_PASSWORD \ + INIT_NOVA_DB fail_unless_db cfg=/etc/nova/nova.conf @@ -12,12 +13,14 @@ cfg=/etc/nova/nova.conf # configure logging crudini --set $cfg DEFAULT log_file "${NOVA_CONDUCTOR_LOG_FILE}" -mysql -h ${MARIADB_SERVICE_HOST} -u root -p${DB_ROOT_PASSWORD} mysql <<EOF +if [ "${INIT_NOVA_DB}" == "true" ]; then + mysql -h ${MARIADB_SERVICE_HOST} -u root -p${DB_ROOT_PASSWORD} mysql <<EOF CREATE DATABASE IF NOT EXISTS ${NOVA_DB_NAME}; GRANT ALL PRIVILEGES ON ${NOVA_DB_NAME}.* TO - '${NOVA_DB_USER}'@'%' IDENTIFIED BY '${NOVA_DB_PASSWORD}' + '${NOVA_DB_USER}'@'%' IDENTIFIED BY '${NOVA_DB_PASSWORD}' EOF -nova-manage db sync + nova-manage db sync +fi exec /usr/bin/nova-conductor --config-file /etc/nova/nova.conf diff --git a/docs/integration-guide.md b/docs/integration-guide.md index d793686dc7..106f207e5f 100644 --- a/docs/integration-guide.md +++ b/docs/integration-guide.md @@ -112,6 +112,12 @@ all containers. This allows a simple method of ensuring every type of node HEAT_API_SERVICE_HOST=<IP> - The IP Address where the Heat API service is hosted HEAT_API_CFN_SERVICE_HOST=<IP> - The IP Address where Heat users will contact the heat-engine in search for meta data HEAT_API_CFN_URL_HOST=<IP> - The IP Address where Heat virtual machines will contact the heat-engine to signal wait conditions + INIT_CINDER_DB=<true|false> - Initialize or update the Cinder db + INIT_DESIGNATE_DB=<true|false> - Initialize or update the Designate db + INIT_GLANCE_DB=<true|false> - Initialize or update the Glance db + INIT_HEAT_DB=<true|false> - Initialize or update the Heat db + INIT_KEYSTONE_DB=<true|false> - Initialize or update the Keystone db + INIT_NOVA_DB=<true|false> - Initialize or update the Nova db PUBLIC_INTERFACE=<eth1> - The nova public interface PUBLIC_IP=<Host IP Address> - The IP Address of this host RABBITMQ_PASS=<rabbit> - The rabbitmq password used to join AMQP @@ -135,7 +141,6 @@ all containers. This allows a simple method of ensuring every type of node DESIGNATE_API_SERVICE_PORT=<9001> - The port of the Designate API DESIGNATE_MDNS_PORT=<5354> - The port of the Designate MiniDNS server acting as master server DESIGNATE_DNS_PORT=<53> - The port of the Designate-backed DNS slaves that are used by the world - DESIGNATE_INITDB=<true|false> - Configures if the database should be created and initialised DESIGNATE_ALLOW_RECURSION=<true|false> - Configure a recursive nameserver DESIGNATE_DEFAULT_POOL_NS_RECORD=<ns1.example.org.> - Name of server used to generate NS records DESIGNATE_SINK_NOVA_DOMAIN_NAME=<nova.example.org.> - Name of domain used to create records from Nova notifications @@ -162,7 +167,6 @@ all containers. This allows a simple method of ensuring every type of node CINDER_VOLUME_BACKEND_NAME=<LVM_iSCSI57> - The backend name for a given driver implementation CINDER_VOLUME_DRIVER=<cinder.volume.drivers.lvm.LVMISCSIDriver> - The driver used for volume creation CINDER_ENABLED_BACKEND=<lvm57> - A list of backend names to use - INIT_CINDER_DB=<true|false> - Initialize or update the cinder db [Minimum environment variable setup guide.](https://github.com/stackforge/kolla/blob/master/docs/minimal-environment-vars.md) diff --git a/tools/genenv b/tools/genenv index b1a13fd378..5fdc8a7ba3 100755 --- a/tools/genenv +++ b/tools/genenv @@ -24,9 +24,15 @@ ADMIN_USER_PASSWORD=steakfordinner # Database HOST_IP=$MY_IP +INIT_CINDER_DB=true +INIT_DESIGNATE_DB=true +INIT_GLANCE_DB=true +INIT_HEAT_DB=true +INIT_KEYSTONE_DB=true +INIT_NOVA_DB=true MARIADB_ROOT_PASSWORD=kolla PASSWORD=12345 -INIT_CINDER_DB=true + # Galera DB_CLUSTER_BIND_ADDRESS=0.0.0.0 @@ -155,7 +161,6 @@ DESIGNATE_DNS_PORT=53 DESIGNATE_POOLMAN_POOLID=$(uuidgen) DESIGNATE_POOLMAN_TARGETS=$(uuidgen) DESIGNATE_POOLMAN_NSS=$(uuidgen) -DESIGNATE_INITDB=true DESIGNATE_ALLOW_RECURSION=true DESIGNATE_DEFAULT_POOL_NS_RECORD=ns1.example.org. DESIGNATE_SINK_NOVA_DOMAIN_NAME=nova.example.org. @@ -334,6 +339,12 @@ CINDER_API_LOG_FILE=$CINDER_API_LOG_FILE CINDER_VOLUME_LOG_FILE=$CINDER_VOLUME_LOG_FILE CINDER_BACKUP_LOG_FILE=$CINDER_BACKUP_LOG_FILE CINDER_SCHEDULER_LOG_FILE=$CINDER_SCHEDULER_LOG_FILE +INIT_CINDER_DB=$INIT_CINDER_DB +INIT_DESIGNATE_DB=$INIT_DESIGNATE_DB +INIT_GLANCE_DB=$INIT_GLANCE_DB +INIT_HEAT_DB=$INIT_HEAT_DB +INIT_KEYSTONE_DB=$INIT_KEYSTONE_DB +INIT_NOVA_DB=$INIT_NOVA_DB EOF echo Please customize your FLAT_INTERFACE to a different network then your echo main network. The FLAT_INTERFACE is used for inter-VM communication.