mirror of
https://github.com/dredx/prole.git
synced 2026-09-27 23:54:30 +00:00
- Add merlin.prole.org (10.0.0.6) to inventory (k3s_hosts, mariadb_primary) - Relax k3s preflight: /var/lib/rancher no longer requires iSCSI, only blocks SD-backed storage - Add netplan static IP role (NetworkManager) and MariaDB primary/replica roles + site.yml ordering - Add/upgrade USB prep tooling (prepare_mariadb_usb.sh + generated setup.sh + fstab-by-LABEL) Co-authored-by: Junie <junie@jetbrains.com>
85 lines
2.7 KiB
YAML
85 lines
2.7 KiB
YAML
---
|
|
|
|
- name: Skip MariaDB replica provisioning when disabled
|
|
ansible.builtin.meta: end_host
|
|
when: not (mariadb_replica_enabled | default(false) | bool)
|
|
|
|
- name: Install MariaDB and tooling
|
|
ansible.builtin.package:
|
|
name:
|
|
- mariadb-server
|
|
- mariadb-client
|
|
- rsync
|
|
state: present
|
|
|
|
- name: Ensure USB mountpoint directory exists
|
|
ansible.builtin.file:
|
|
path: "{{ mariadb_usb_mountpoint | default('/srv/mariadb') }}"
|
|
state: directory
|
|
owner: root
|
|
group: root
|
|
mode: "0755"
|
|
|
|
- name: Mount MariaDB USB filesystem
|
|
ansible.builtin.mount:
|
|
src: "LABEL={{ mariadb_usb_label | default('MARIADB') }}"
|
|
path: "{{ mariadb_usb_mountpoint | default('/srv/mariadb') }}"
|
|
fstype: "{{ mariadb_usb_fstype | default('ext4') }}"
|
|
opts: "{{ mariadb_usb_mount_opts | default('noatime,nofail') }}"
|
|
state: mounted
|
|
|
|
- name: Stop MariaDB before datadir changes
|
|
ansible.builtin.service:
|
|
name: mariadb
|
|
state: stopped
|
|
failed_when: false
|
|
|
|
- name: Ensure MariaDB datadir exists on USB
|
|
ansible.builtin.file:
|
|
path: "{{ mariadb_datadir | default((mariadb_usb_mountpoint | default('/srv/mariadb')) ~ '/mariadb') }}"
|
|
state: directory
|
|
owner: mysql
|
|
group: mysql
|
|
mode: "0700"
|
|
|
|
- name: Allow MariaDB datadir in AppArmor (Ubuntu/Debian)
|
|
ansible.builtin.copy:
|
|
dest: /etc/apparmor.d/local/usr.sbin.mysqld
|
|
owner: root
|
|
group: root
|
|
mode: "0644"
|
|
content: |
|
|
# Managed by Ansible (mariadb_replica)
|
|
{{ mariadb_datadir | default((mariadb_usb_mountpoint | default('/srv/mariadb')) ~ '/mariadb') }}/ r,
|
|
{{ mariadb_datadir | default((mariadb_usb_mountpoint | default('/srv/mariadb')) ~ '/mariadb') }}/** rwk,
|
|
register: _mariadb_apparmor_local
|
|
when: ansible_facts['os_family'] | default('') == 'Debian'
|
|
|
|
- name: Reload AppArmor profile for mysqld
|
|
ansible.builtin.command: apparmor_parser -r /etc/apparmor.d/usr.sbin.mysqld
|
|
changed_when: false
|
|
when:
|
|
- ansible_facts['os_family'] | default('') == 'Debian'
|
|
- _mariadb_apparmor_local is changed
|
|
failed_when: false
|
|
|
|
- name: Configure MariaDB bind-address
|
|
ansible.builtin.lineinfile:
|
|
path: /etc/mysql/mariadb.conf.d/50-server.cnf
|
|
regexp: '^bind-address\s*='
|
|
line: "bind-address = {{ mariadb_bind_address | default('0.0.0.0') }}"
|
|
insertafter: '^\[mysqld\]'
|
|
|
|
- name: Configure MariaDB datadir
|
|
ansible.builtin.lineinfile:
|
|
path: /etc/mysql/mariadb.conf.d/50-server.cnf
|
|
regexp: '^datadir\s*='
|
|
line: "datadir = {{ mariadb_datadir | default((mariadb_usb_mountpoint | default('/srv/mariadb')) ~ '/mariadb') }}"
|
|
insertafter: '^\[mysqld\]'
|
|
|
|
- name: Ensure MariaDB service is started and enabled
|
|
ansible.builtin.service:
|
|
name: mariadb
|
|
state: started
|
|
enabled: true
|