--- # Copyright 2016, Rackspace US, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. - name: Run functional tests hosts: galera_all user: root gather_facts: true tasks: - name: Wait for cluster to be ready block: - name: Wait for cluster ready state command: | mariadb \ -e "show status like 'wsrep_incoming_addresses';" \ --silent \ --skip-column-names register: mysql_instance_ready retries: 20 delay: 5 changed_when: false until: mysql_instance_ready is success and mysql_instance_ready.stdout.split()[-1].split(',') | length == groups['galera_all'] | length rescue: - name: Restarting weird maria instance service: name: mariadb state: restarted - name: Wait for cluster ready state command: | mariadb \ -e "show status like 'wsrep_incoming_addresses';" \ --silent \ --skip-column-names register: mysql_instance_ready retries: 20 delay: 5 changed_when: false until: mysql_instance_ready is success and mysql_instance_ready.stdout.split()[-1].split(',') | length == groups['galera_all'] | length - name: Check cluster incoming addresses command: | mariadb \ -e "show status like 'wsrep_incoming_addresses';" \ --silent \ --skip-column-names register: wsrep_incoming_addresses changed_when: false tags: - skip_ansible_lint - name: Check cluster local state command: | mariadb \ -e "show status like 'wsrep_local_state_comment';" \ --silent \ --skip-column-names register: wsrep_local_state_comment changed_when: false tags: - skip_ansible_lint - name: Check cluster evs state command: | mariadb \ -e "show status like 'wsrep_evs_state';" \ --silent \ --skip-column-names register: wsrep_evs_state changed_when: false tags: - skip_ansible_lint - name: Check contents assert: that: - "'Synced' in wsrep_local_state_comment.stdout" - "'OPERATIONAL' in wsrep_evs_state.stdout" - "'10.1.0.2' in wsrep_incoming_addresses.stdout" - "'10.1.0.3' in wsrep_incoming_addresses.stdout" - "'10.1.0.4' in wsrep_incoming_addresses.stdout" - name: Create DB for service on 10.1.0.2 community.mysql.mysql_db: login_user: "{{ galera_root_user }}" login_password: "{{ galera_root_password }}" login_host: "10.1.0.2" name: "OSA-test" state: "present" when: ansible_host == '10.1.0.2' tags: - skip_ansible_lint - name: Grant access to the DB on 10.1.0.3 community.mysql.mysql_user: login_user: "{{ galera_root_user }}" login_password: "{{ galera_root_password }}" login_host: "10.1.0.3" name: "osa-tester" password: "tester-secrete" host: "{{ item }}" state: "present" priv: "OSA-test.*:ALL" with_items: - "localhost" - "%" when: ansible_host == '10.1.0.3' tags: - skip_ansible_lint