Initial commit

This commit is contained in:
Tyler Hale 2023-02-03 10:59:47 -07:00
parent 871f8267ec
commit db8abb89d8
Signed by: Tyler
GPG key ID: C7CC4B910D88EF96
12 changed files with 328 additions and 0 deletions

View file

@ -0,0 +1,14 @@
---
# file: roles/mariadb_cluster/tasks/bootstrap-galera.yml
- name: Stop MariaDB on first MariaDB Galera cluster node
service: name=mariadb state=stopped
when: inventory_hostname == groups['mariadb_cluster'][0]
- name: Bootstrap first MariaDB Galera cluster node
command: galera_new_cluster
when: inventory_hostname == groups['mariadb_cluster'][0]
- name: Restart the other MariaDB Galera cluster nodes
service: name=mariadb state=restarted
when: inventory_hostname != groups['mariadb_cluster'][0]

View file

@ -0,0 +1,76 @@
---
# file: roles/mariadb_cluster/tasks/main.yml
- name: Create variable of other members IPs to be included into the cluster
set_fact: nodelist={%for host in groups['mariadb_cluster']|difference([inventory_hostname])%}{{hostvars[host].ansible_host}}{% if not loop.last %},{% endif %}{% endfor %}
- name: Install prereq packages
package:
name:
- mariadb-server-galera
- mariadb-server
- galera
state: latest
- name: Update galera config
template:
src: "galera.cnf.j2"
dest: "/etc/my.cnf.d/galera.cnf"
notify: Bootstrap Galera
- name: Enable firewall rule for MySQL access
firewalld:
port: 3306/tcp
permanent: yes
immediate: yes
state: enabled
notify: Reload firewalld
when: mariadb_cluster_access_ip == ""
- name: "Enable firewall rule for MySQL access to Access IP"
firewalld:
rich_rule: 'rule family="ipv4" source address="{{ mariadb_cluster_access_ip }}" port port="3306" protocol="tcp" accept'
permanent: yes
state: enabled
immediate: yes
notify: Reload firewalld
when: mariadb_cluster_access_ip != ""
- name: Setup access for other servers
include_tasks: setup-server.yml
loop: "{{ groups['mariadb_cluster']|difference([inventory_hostname]) }}"
loop_control:
extended: yes
- name: Place mariadb-fail script
template:
src: "mariadb-fail.j2"
dest: "/usr/local/sbin/mariadb-fail"
owner: root
mode: 755
- name: Deploy mariadb-fail service
template:
src: mariadb-fail.service.j2
dest: /etc/systemd/system/mariadb-fail.service
notify: Daemon Reload
- name: Create directory for mariadb override
file:
path: "/etc/systemd/system/mariadb.service.d"
state: directory
- name: Deploy mariadb override
template:
src: mariadb-override.conf.j2
dest: /etc/systemd/system/mariadb.service.d/override.conf
notify: Daemon Reload
- name: Flush handlers
meta: flush_handlers
- name: Start and enable mariadb
service:
name: mariadb
state: started
enabled: yes

View file

@ -0,0 +1,34 @@
---
# file: roles/mariadb_cluster/tasks/setup-server.yml
- name: "{{ hostvars[item]['ansible_hostname'] }} - Enable firewall rule for Galera cluster replication traffic (TCP)"
firewalld:
rich_rule: 'rule family="ipv4" source address="{{ hostvars[item]["ansible_host"] }}" port port="4567" protocol="tcp" accept'
permanent: yes
state: enabled
immediate: yes
notify: Reload firewalld
- name: "{{ hostvars[item]['ansible_hostname'] }} - Enable firewall rule for Galera cluster replication traffic (UDP)"
firewalld:
rich_rule: 'rule family="ipv4" source address="{{ hostvars[item]["ansible_host"] }}" port port="4567" protocol="udp" accept'
permanent: yes
state: enabled
immediate: yes
notify: Reload firewalld
- name: "{{ hostvars[item]['ansible_hostname'] }} - Enable firewall rule for Incremental State Transfer"
firewalld:
rich_rule: 'rule family="ipv4" source address="{{ hostvars[item]["ansible_host"] }}" port port="4568" protocol="tcp" accept'
permanent: yes
state: enabled
immediate: yes
notify: Reload firewalld
- name: "{{ hostvars[item]['ansible_hostname'] }} - Enable firewall rule for State Snapshot Transfer"
firewalld:
rich_rule: 'rule family="ipv4" source address="{{ hostvars[item]["ansible_host"] }}" port port="4444" protocol="tcp" accept'
permanent: yes
state: enabled
immediate: yes
notify: Reload firewalld