feat: wire mysql delivery to awx callbacks
This commit is contained in:
+23
-18
@@ -102,15 +102,15 @@
|
||||
ansible.builtin.shell:
|
||||
cmd: |
|
||||
set -o pipefail
|
||||
for p in {{ mysql_probe_ports | join(' ') }}; do
|
||||
if ss -lntH "sport = :${p}" | grep -q .; then
|
||||
# already listening: only tolerated when owned by this instance service
|
||||
if ! systemctl is-active --quiet "mysql-delivery@{{ mysql_instance }}.service"; then
|
||||
echo "port ${p} already in use on target host" >&2
|
||||
exit 3
|
||||
fi
|
||||
{% for port in mysql_probe_ports %}
|
||||
if ss -lntH "sport = :{{ port }}" | grep -q .; then
|
||||
# already listening: only tolerated when owned by this instance service
|
||||
if ! systemctl is-active --quiet "mysql-delivery@{{ mysql_instance }}.service"; then
|
||||
echo "port {{ port }} already in use on target host" >&2
|
||||
exit 3
|
||||
fi
|
||||
done
|
||||
fi
|
||||
{% endfor %}
|
||||
executable: /bin/bash
|
||||
vars:
|
||||
mysql_probe_ports: "{{ [mysql_port_value, mysql_gr_port_value] if topology == 'mgr_3' else [mysql_port_value] }}"
|
||||
@@ -123,19 +123,24 @@
|
||||
register: mysql_available_memory
|
||||
changed_when: false
|
||||
|
||||
- name: Resolve data-disk mountpoint available space
|
||||
ansible.builtin.set_fact:
|
||||
mysql_mount_avail: >-
|
||||
{{ (ansible_mounts | selectattr('mount', 'equalto', mysql_data_disk)
|
||||
| map(attribute='size_available') | first)
|
||||
| default(ansible_mounts | selectattr('mount', 'equalto', '/')
|
||||
| map(attribute='size_available') | first) }}
|
||||
- name: Read available bytes from the backing filesystem
|
||||
ansible.builtin.shell:
|
||||
cmd: |
|
||||
set -euo pipefail
|
||||
candidate="{{ mysql_data_disk }}"
|
||||
while [ ! -e "$candidate" ] && [ "$candidate" != "/" ]; do
|
||||
candidate="$(dirname "$candidate")"
|
||||
done
|
||||
df -P -B1 "$candidate" | awk 'NR == 2 { print $4 }'
|
||||
executable: /bin/bash
|
||||
register: mysql_available_disk_bytes
|
||||
changed_when: false
|
||||
|
||||
- name: Check available memory and data-disk space
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- (mysql_available_memory.stdout | int) >= (mysql_memory_mb_value | int)
|
||||
- (mysql_mount_avail | int) >= (mysql_storage_gb_value | int) * 1073741824
|
||||
- (mysql_available_disk_bytes.stdout | int) >= (mysql_storage_gb_value | int) * 1073741824
|
||||
fail_msg: >-
|
||||
Target host lacks memory or free space on {{ mysql_data_disk }};
|
||||
host-wide Σ-quota budgeting is the platform's responsibility, this is a last-resort guard.
|
||||
@@ -234,6 +239,7 @@
|
||||
- { path: "{{ mysql_log_dir }}", owner: mysql, group: mysql, mode: '0750' }
|
||||
- { path: "{{ mysql_binlog_dir }}", owner: mysql, group: mysql, mode: '0750' }
|
||||
- { path: "{{ mysql_redo_dir }}", owner: mysql, group: mysql, mode: '0750' }
|
||||
- { path: "{{ mysql_run_dir }}", owner: mysql, group: mysql, mode: '0755' }
|
||||
- { path: "{{ mysql_tmp_dir }}", owner: mysql, group: mysql, mode: '0750' }
|
||||
|
||||
- name: Link native binaries into the instance directory
|
||||
@@ -275,7 +281,7 @@
|
||||
else 8000 if (mysql_memory_gb | int) <= 64
|
||||
else 16000) }}
|
||||
mysql_redo_capacity: >-
|
||||
{{ innodb_redo_log_capacity if (innodb_redo_log_capacity is defined)
|
||||
{{ innodb_redo_log_capacity if (innodb_redo_log_capacity is defined and (innodb_redo_log_capacity | string) != 'auto')
|
||||
else ('128M' if (mysql_memory_gb | int) <= 4
|
||||
else '256M' if (mysql_memory_gb | int) <= 16
|
||||
else '512M' if (mysql_memory_gb | int) <= 32
|
||||
@@ -299,7 +305,6 @@
|
||||
- --user=mysql
|
||||
args:
|
||||
creates: "{{ mysql_data_dir }}/auto.cnf"
|
||||
no_log: true
|
||||
|
||||
- name: Install the delivery systemd template
|
||||
ansible.builtin.copy:
|
||||
|
||||
Reference in New Issue
Block a user