aboutsummaryrefslogtreecommitdiff
path: root/ansible
diff options
context:
space:
mode:
authorSidharth Surana <ssurana@vmware.com>2015-12-08 02:23:58 -0800
committerSidharth Surana <ssurana@vmware.com>2016-01-04 09:10:04 -0800
commit37d44444d7bc1804976fc4477c4022ee6cc06e44 (patch)
treef3a24b78ab16f83c2698165b9f7dd6f20fc819bb /ansible
parent58daa10ae30cc750e5f8f3f5e512f444d12aa5f7 (diff)
downloadkolla-37d44444d7bc1804976fc4477c4022ee6cc06e44.tar.gz
kolla-37d44444d7bc1804976fc4477c4022ee6cc06e44.zip
Make galeradb bootstraping robust
Currently, there are arbitrary wait for mariadb service startup. However, this leads to nondeterministic results in the current workflow. This patch tries to make the workflow more deterministic. Change-Id: I3c6245cce93c7ff0d3d57cb2ae065a1ed1487769 Closes-Bug: #1491782
Diffstat (limited to 'ansible')
-rw-r--r--ansible/roles/mariadb/defaults/main.yml2
-rw-r--r--ansible/roles/mariadb/tasks/bootstrap.yml12
-rw-r--r--ansible/roles/mariadb/tasks/start.yml11
-rw-r--r--ansible/roles/mariadb/templates/galera.cnf.j23
4 files changed, 24 insertions, 4 deletions
diff --git a/ansible/roles/mariadb/defaults/main.yml b/ansible/roles/mariadb/defaults/main.yml
index 00f49d1ba..410e86d3e 100644
--- a/ansible/roles/mariadb/defaults/main.yml
+++ b/ansible/roles/mariadb/defaults/main.yml
@@ -5,7 +5,7 @@ project_name: "mariadb"
# Database
####################
database_cluster_name: "openstack"
-
+database_max_timeout: 60
####################
# Docker
diff --git a/ansible/roles/mariadb/tasks/bootstrap.yml b/ansible/roles/mariadb/tasks/bootstrap.yml
index 68354dd15..af7d8f308 100644
--- a/ansible/roles/mariadb/tasks/bootstrap.yml
+++ b/ansible/roles/mariadb/tasks/bootstrap.yml
@@ -44,6 +44,8 @@
KOLLA_BOOTSTRAP:
KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}"
DB_ROOT_PASSWORD: "{{ database_password }}"
+ DB_PID_FILE: "/var/lib/mysql/{{ hostvars[inventory_hostname]['ansible_hostname'] }}-galera.pid"
+ DB_MAX_TIMEOUT: "{{ database_max_timeout }}"
image: "{{ mariadb_image_full }}"
name: "mariadb"
restart_policy: "never"
@@ -52,7 +54,11 @@
- "mariadb:/var/lib/mysql"
when: delegate_host == 'None' and inventory_hostname == groups['mariadb'][0]
-- name: Sleeping for 15 seconds while the cluster starts
- command: sleep 15
- changed_when: False
+- name: Waiting for MariaDB service to be ready
+ command: "docker exec mariadb ls /var/lib/mysql/{{ hostvars[inventory_hostname]['ansible_hostname'] }}-galera.pid /var/lib/mysql/cluster.exists"
+ register: bootstrap_result
when: delegate_host == 'None' and inventory_hostname == groups['mariadb'][0]
+ until: bootstrap_result|success
+ changed_when: False
+ retries: 6
+ delay: 10
diff --git a/ansible/roles/mariadb/tasks/start.yml b/ansible/roles/mariadb/tasks/start.yml
index 4682455ca..cfc12c063 100644
--- a/ansible/roles/mariadb/tasks/start.yml
+++ b/ansible/roles/mariadb/tasks/start.yml
@@ -11,3 +11,14 @@
when: delegate_host != 'None' or
( groups['mariadb'] | length ) == 1 or
( delegate_host == 'None' and inventory_hostname != groups['mariadb'][0] )
+
+- name: Waiting for MariaDB service to be ready
+ command: "docker exec mariadb ls /var/lib/mysql/{{ hostvars[inventory_hostname]['ansible_hostname'] }}-galera.pid"
+ register: bootstrap_result
+ when: delegate_host != 'None' or
+ ( groups['mariadb'] | length ) == 1 or
+ ( delegate_host == 'None' and inventory_hostname != groups['mariadb'][0] )
+ until: bootstrap_result|success
+ changed_when: False
+ retries: 6
+ delay: 10
diff --git a/ansible/roles/mariadb/templates/galera.cnf.j2 b/ansible/roles/mariadb/templates/galera.cnf.j2
index bed806883..4e1039268 100644
--- a/ansible/roles/mariadb/templates/galera.cnf.j2
+++ b/ansible/roles/mariadb/templates/galera.cnf.j2
@@ -24,3 +24,6 @@ wsrep_sst_auth={{ database_user }}:{{ database_password }}
wsrep_slave_threads=4
max_connections=1000
+
+[server]
+pid-file=/var/lib/mysql/{{ ansible_hostname }}-galera.pid