aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2015-07-12 03:30:09 +0000
committerGerrit Code Review <review@openstack.org>2015-07-12 03:30:09 +0000
commitf41cde62a43e8872050e53f2f0b4402e49309293 (patch)
treefebd28f509075bfaa58ff9646f1175e89a00c356
parent4922d6056ce0ea617df95733f48c6efeff97e8e4 (diff)
parent8f194e50a0f95ff21f94afdb9581b19e00ef2571 (diff)
downloadkolla-f41cde62a43e8872050e53f2f0b4402e49309293.tar.gz
kolla-f41cde62a43e8872050e53f2f0b4402e49309293.zip
Merge "Fixes an issue with AIO and galera clusters"
-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'] }}