aboutsummaryrefslogtreecommitdiff
path: root/docker
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2016-01-11 20:23:58 +0000
committerGerrit Code Review <review@openstack.org>2016-01-11 20:23:58 +0000
commite8e8a9a2abc4427df0562395c6549aef13c9266e (patch)
treead3ff0855482f1cec19972057cde6fe3cdb014b9 /docker
parent421b4c6bcb91d0aebf8e6960e3380af0a8b8c33e (diff)
parent37d44444d7bc1804976fc4477c4022ee6cc06e44 (diff)
downloadkolla-e8e8a9a2abc4427df0562395c6549aef13c9266e.tar.gz
kolla-e8e8a9a2abc4427df0562395c6549aef13c9266e.zip
Merge "Make galeradb bootstraping robust"
Diffstat (limited to 'docker')
-rw-r--r--docker/mariadb/extend_start.sh16
-rw-r--r--docker/mariadb/security_reset.expect53
2 files changed, 56 insertions, 13 deletions
diff --git a/docker/mariadb/extend_start.sh b/docker/mariadb/extend_start.sh
index 2ff24b73b..dcbdac2ed 100644
--- a/docker/mariadb/extend_start.sh
+++ b/docker/mariadb/extend_start.sh
@@ -2,11 +2,17 @@
function bootstrap_db {
mysqld_safe --wsrep-new-cluster &
-
- # Waiting for deamon
- sleep 10
+ # Wait for the mariadb server to be "Ready" before starting the security reset with a max timeout
+ TIMEOUT=${DB_MAX_TIMEOUT:-60}
+ while [ ! -f ${DB_PID_FILE} ]; do
+ if [[ ${TIMEOUT} -gt 0 ]]; then
+ let TIMEOUT-=1
+ sleep 1
+ else
+ exit 1
+ fi
+ done
sudo -E kolla_security_reset
-
mysql -u root --password="${DB_ROOT_PASSWORD}" -e "GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '${DB_ROOT_PASSWORD}' WITH GRANT OPTION;"
mysql -u root --password="${DB_ROOT_PASSWORD}" -e "GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '${DB_ROOT_PASSWORD}' WITH GRANT OPTION;"
mysqladmin -uroot -p"${DB_ROOT_PASSWORD}" shutdown
@@ -17,7 +23,7 @@ sudo chown mysql: /var/lib/mysql
# This catches all cases of the BOOTSTRAP variable being set, including empty
if [[ "${!KOLLA_BOOTSTRAP[@]}" ]] && [[ ! -e /var/lib/mysql/cluster.exists ]]; then
ARGS="--wsrep-new-cluster"
- touch /var/lib/mysql/cluster.exists
mysql_install_db
bootstrap_db
+ touch /var/lib/mysql/cluster.exists
fi
diff --git a/docker/mariadb/security_reset.expect b/docker/mariadb/security_reset.expect
index 7c720136f..af71463fb 100644
--- a/docker/mariadb/security_reset.expect
+++ b/docker/mariadb/security_reset.expect
@@ -2,20 +2,57 @@
set timeout 10
spawn mysql_secure_installation
-expect "Enter current password for root (enter for none):"
+expect {
+ timeout { send_user "\nFailed to get 'Enter current password for root (enter for none):' prompt\n"; exit 1 }
+ eof { send_user "\nFailed to get 'Enter current password for root (enter for none):' prompt\n"; exit 1 }
+ "Enter current password for root (enter for none):"
+}
send "\r"
-expect "Set root password?"
+expect {
+ timeout { send_user "\nFailed to get 'Set root password?' prompt\n"; exit 1 }
+ eof { send_user "\nFailed to get 'Set root password?' prompt\n"; exit 1 }
+ "Set root password?"
+}
send "y\r"
-expect "New password:"
+expect {
+ timeout { send_user "\nFailed to get 'New password:' prompt\n"; exit 1 }
+ eof { send_user "\nFailed to get 'New password:' prompt\n"; exit 1 }
+ "New password:"
+}
send "$env(DB_ROOT_PASSWORD)\r"
-expect "Re-enter new password:"
+
+expect {
+ timeout { send_user "\nFailed to get 'Re-enter new password:' prompt\n"; exit 1 }
+ eof { send_user "\nFailed to get 'Re-enter new password:' prompt\n"; exit 1 }
+ "Re-enter new password:"
+}
send "$env(DB_ROOT_PASSWORD)\r"
-expect "Remove anonymous users?"
+
+expect {
+ timeout { send_user "\nFailed to get 'Remove anonymous users?' prompt\n"; exit 1 }
+ eof { send_user "\nFailed to get 'Remove anonymous users?' prompt\n"; exit 1 }
+ "Remove anonymous users?"
+}
send "y\r"
-expect "Disallow root login remotely?"
+
+expect {
+ timeout { send_user "\nFailed to get 'Disallow root login remotely?' prompt\n"; exit 1 }
+ eof { send_user "\nFailed to get 'Disallow root login remotely?' prompt\n"; exit 1 }
+ "Disallow root login remotely?"
+}
send "n\r"
-expect "Remove test database and access to it?"
+
+expect {
+ timeout { send_user "\nFailed to get 'Remove test database and access to it?' prompt\n"; exit 1 }
+ eof { send_user "\nFailed to get 'Remove test database and access to it?' prompt\n"; exit 1 }
+ "Remove test database and access to it?"
+}
send "y\r"
-expect "Reload privilege tables now?"
+
+expect {
+ timeout { send_user "\nFailed to get 'Reload privilege tables now?' prompt\n"; exit 1 }
+ eof { send_user "\nFailed to get 'Reload privilege tables now?' prompt\n"; exit 1 }
+ "Reload privilege tables now?"
+}
send "y\r"
expect eof