57577bb369
This patch resolves a minor issue that was generating a "warning" message when running the galera-install.yml playbook. The "{{" and "}}" are not required for conditionals, and loop expressions, so these can and should safely be removed from "when:" statements and "with_items:" statements. Functionality does not change but the warning message will go away after this patch. Change-Id: I3e9d3a4afb0e3d1284c78a37dba6d1534154a063 Closes-Bug: #1475328
113 lines
4.1 KiB
YAML
113 lines
4.1 KiB
YAML
---
|
|
# Copyright 2014, 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: Check galera cluster status
|
|
hosts: galera_all
|
|
max_fail_percentage: 0
|
|
tasks:
|
|
- name: Check if mysql is running
|
|
command: /usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf ping
|
|
ignore_errors: true
|
|
register: mysql_running
|
|
|
|
- fail:
|
|
msg: "The cluster may be broken, mysql is not running but appears to be installed. Fix it before re-running the playbook or override with 'openstack-ansible -e galera_ignore_cluster_state=true galera-install.yml'."
|
|
when:
|
|
- not galera_ignore_cluster_state | bool
|
|
- mysql_running.rc == 1
|
|
- mysql_running.stderr | search("Check that mysqld is running and that the socket")
|
|
|
|
- name: Gather mysql facts
|
|
mysql_status_facts:
|
|
ignore_errors: true
|
|
|
|
- fail:
|
|
msg: "The cluster may be broken, mysql is running but unable to gather mysql facts. Fix it before re-running the playbook or override with 'openstack-ansible -e galera_ignore_cluster_state=true galera-install.yml'."
|
|
when:
|
|
- not galera_ignore_cluster_state | bool
|
|
- mysql_running.rc == 0
|
|
- "{{ 'mysql_status' not in hostvars[inventory_hostname] }}"
|
|
|
|
- fail:
|
|
msg: "wsrep_incoming_addresses does not match across the cluster. Please fix before re-running the playbooks or override with 'openstack-ansible -e galera_ignore_cluster_state=true galera-install.yml'."
|
|
with_items: play_hosts
|
|
when:
|
|
- not galera_ignore_cluster_state | bool
|
|
- mysql_running.rc == 0
|
|
- hostvars[item]['mysql_running']['rc'] == 0
|
|
- hostvars[inventory_hostname]['mysql_status']['wsrep_incoming_addresses'] != hostvars[item]['mysql_status']['wsrep_incoming_addresses']
|
|
|
|
- set_fact:
|
|
galera_existing_cluster: false
|
|
|
|
- set_fact:
|
|
galera_existing_cluster: true
|
|
with_items: play_hosts
|
|
when: hostvars[item].mysql_running.rc == 0
|
|
vars:
|
|
galera_ignore_cluster_state: false
|
|
tags:
|
|
- discover-galera-cluster-state
|
|
|
|
- name: Install galera server
|
|
hosts: galera_all
|
|
serial: 1
|
|
max_fail_percentage: 20
|
|
user: root
|
|
pre_tasks:
|
|
- name: Galera extra lxc config
|
|
lxc_container:
|
|
name: "{{ container_name }}"
|
|
container_command: |
|
|
[[ ! -d "/var/lib/mysql" ]] && mkdir -p "/var/lib/mysql"
|
|
container_config:
|
|
- "lxc.mount.entry=/openstack/{{ container_name }} var/lib/mysql none bind 0 0"
|
|
delegate_to: "{{ physical_host }}"
|
|
when: is_metal == false or is_metal == "False"
|
|
tags:
|
|
- galera-mysql-dir
|
|
- name: Flush net cache
|
|
command: /usr/local/bin/lxc-system-manage flush-net-cache
|
|
delegate_to: "{{ physical_host }}"
|
|
tags:
|
|
- flush-net-cache
|
|
- name: Wait for container ssh
|
|
wait_for:
|
|
port: "22"
|
|
delay: 5
|
|
host: "{{ ansible_ssh_host }}"
|
|
delegate_to: "{{ physical_host }}"
|
|
tags:
|
|
- galera-ssh-wait
|
|
roles:
|
|
- { role: "galera_server", tags: [ "galera-server" ] }
|
|
- role: "rsyslog_client"
|
|
rsyslog_client_log_dir: "/var/log/mysql_logs"
|
|
rsyslog_client_log_files:
|
|
- /var/log/mysql.log
|
|
- /var/log/mysql.err
|
|
rsyslog_client_config_name: "99-galera-rsyslog-client.conf"
|
|
tags:
|
|
- "galera-rsyslog-client"
|
|
- "rsyslog-client"
|
|
- role: "system_crontab_coordination"
|
|
tags:
|
|
- "system-crontab-coordination"
|
|
vars:
|
|
galera_wsrep_node_name: "{{ container_name }}"
|
|
ansible_hostname: "{{ container_name }}"
|
|
ansible_ssh_host: "{{ container_address }}"
|
|
is_metal: "{{ properties.is_metal|default(false) }}"
|