############################################################################## # Copyright (c) 2016 HUAWEI TECHNOLOGIES CO.,LTD and others. # # All rights reserved. This program and the accompanying materials # are made available under the terms of the Apache License, Version 2.0 # which accompanies this distribution, and is available at # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## --- - name: get cluster status shell: mysql --silent --skip-column-names -e 'SHOW STATUS LIKE "wsrep_evs_state"'|awk '{print $2}' register: cluster_status when: - inventory_hostname == haproxy_hosts.keys()[0] - name: start first node to create new cluster shell: > service mysql bootstrap; service mysql start; when: | inventory_hostname == haproxy_hosts.keys()[0] and not cluster_status.stdout | search("OPERATIONAL") - name: wait for cluster ready shell: mysql --silent --skip-column-names -e 'SHOW STATUS LIKE "wsrep_evs_state"'|awk '{print $2}' register: cluster_status until: cluster_status|success failed_when: not cluster_status.stdout | search("OPERATIONAL") retries: 10 delay: 3 when: | inventory_hostname == haproxy_hosts.keys()[0] and not cluster_status.stdout | search("OPERATIONAL") - name: if I in the cluster nodes shell: mysql --silent --skip-column-names -e 'SHOW STATUS LIKE "wsrep_incoming_addresses"'|awk '{print $2}' register: cluster_nodes changed_when: false - name: restart other nodes and join cluster1 shell: service mysql restart; when: | inventory_hostname != haproxy_hosts.keys()[0] and not cluster_nodes.stdout | search( "{{ internal_ip }}" ) ignore_errors: True - name: delay 60 seconds shell: sleep 60 - name: restart other nodes and join cluster2 shell: service mysql restart; when: | inventory_hostname != haproxy_hosts.keys()[0] and not cluster_nodes.stdout | search( "{{ internal_ip }}" ) - name: chmod directory shell: > chmod 755 -R /var/lib/mysql/ ; chmod 755 -R /var/log/mysql/ ; chmod 755 -R /etc/mysql/conf.d/; - name: restart first nodes shell: service mysql restart when: | (inventory_hostname == haproxy_hosts.keys()[0] and haproxy_hosts|length > 1 and not cluster_nodes.stdout | search( '{{ internal_ip }}' ))