aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ansible/roles/database/tasks/main.yml7
-rw-r--r--ansible/roles/database/tasks/register.yml2
-rw-r--r--ansible/roles/database/tasks/start.yml4
-rw-r--r--ansible/roles/database/templates/galera.cnf.j22
4 files changed, 11 insertions, 4 deletions
diff --git a/ansible/roles/database/tasks/main.yml b/ansible/roles/database/tasks/main.yml
index c7474dde5..c13e4eb0a 100644
--- a/ansible/roles/database/tasks/main.yml
+++ b/ansible/roles/database/tasks/main.yml
@@ -5,9 +5,16 @@
- include: start.yml
+# We use register as a test to see whether the database is active and ready to
+# communicate. This run on all hosts that have a database and attempts to talk
+# to the local database rather than the vip,
- include: register.yml
# This will restart the container we initially used to bootstrap the cluster to
# make it match the other containers environment-wise. This also prevents a
# change from showing up when rerunning the playbooks
- include: start.yml
+
+# Since the last start.yml may have recreated some containers we must wait and
+# check the health again to ensure the hosts are active.
+- include: register.yml
diff --git a/ansible/roles/database/tasks/register.yml b/ansible/roles/database/tasks/register.yml
index ba6021090..c7382ff88 100644
--- a/ansible/roles/database/tasks/register.yml
+++ b/ansible/roles/database/tasks/register.yml
@@ -1,7 +1,7 @@
---
- name: Creating haproxy mysql user
mysql_user:
- login_host: "{{ database_address }}"
+ login_host: "{{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}"
login_user: "{{ database_user }}"
login_password: "{{ database_password }}"
name: "haproxy"
diff --git a/ansible/roles/database/tasks/start.yml b/ansible/roles/database/tasks/start.yml
index e60d49d4e..fcddb9e0c 100644
--- a/ansible/roles/database/tasks/start.yml
+++ b/ansible/roles/database/tasks/start.yml
@@ -9,5 +9,5 @@
- "{{ node_config_directory }}/mariadb/:/opt/kolla/mariadb/:ro"
container_volumes_from:
- "mariadb_data"
- when: delegate_host != 'None' or
- ( delegate_host == 'None' and inventory_hostname != groups['database'][0])
+ when: delegate_host != 'None' or (groups['database'] | length) == 1 or
+ ( delegate_host == 'None' and inventory_hostname != groups['database'][0] )
diff --git a/ansible/roles/database/templates/galera.cnf.j2 b/ansible/roles/database/templates/galera.cnf.j2
index 9d9d725d4..5f3dbbda0 100644
--- a/ansible/roles/database/templates/galera.cnf.j2
+++ b/ansible/roles/database/templates/galera.cnf.j2
@@ -8,7 +8,7 @@ query_cache_type=0
innodb_log_file_size=48M
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
-wsrep_cluster_address=gcomm://{% for host in groups['database'] %}{{ hostvars[host]['ansible_hostname'] }}{% if not loop.last %},{% endif %}{% endfor %}
+wsrep_cluster_address=gcomm://{% if (groups['database'] | length) > 1 %}{% for host in groups['database'] %}{{ hostvars[host]['ansible_hostname'] }}{% if not loop.last %},{% endif %}{% endfor %}{% endif %}
wsrep_cluster_name="{{ database_cluster_name }}"
wsrep_node_address={{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}