ansible-roles/mysql/tasks/utils.yml
Mathieu Trossevin 7c632352a0
Replace the include module with include_tasks or import_tasks
The behaviour of the `include` module is badly defined (it try to choose
between statically importing the tasks and dynamically including them)
and can cause problems depending on any number of constraints (mostly if
it choose the wrong behaviour).

Replace it with the `import_tasks` (always statically import tasks) unless
the `include` is in a loop in which case we replace it with
`include_tasks` (always dynamically include tasks).
2023-01-03 14:43:42 +01:00

252 lines
5.4 KiB
YAML

---
- set_fact:
_mysql_scripts_dir: "{{ mysql_scripts_dir | default(general_scripts_dir, True) | mandatory }}"
- include_role:
name: evolix/remount-usr
when: _mysql_scripts_dir is search("/usr")
- name: Ensure scripts directory exists
file:
dest: "{{ _mysql_scripts_dir }}"
mode: "0700"
state: directory
tags:
- mysql
# mytop
- name: "Install mytop (Debian 8)"
apt:
name: mytop
state: present
tags:
- packages
- mytop
- mysql
when: ansible_distribution_release == "jessie"
- name: "Install dependencies for mytop (Debian 9)"
apt:
name:
- mariadb-client-10.1
- libconfig-inifiles-perl
- libterm-readkey-perl
when: ansible_distribution_release == "stretch"
- name: "Install dependencies for mytop (Debian 10)"
apt:
name:
- mariadb-client-10.3
- libconfig-inifiles-perl
- libterm-readkey-perl
when: ansible_distribution_release == "buster"
- name: "Install dependencies for mytop (Debian 11)"
apt:
name:
- mariadb-client-10.5
- libconfig-inifiles-perl
- libterm-readkey-perl
- libdbd-mariadb-perl
when: ansible_distribution_release == "bullseye"
- name: "Install dependencies for mytop (Debian 12 or later)"
apt:
name:
- mariadb-client-10.6
- libconfig-inifiles-perl
- libterm-readkey-perl
- libdbd-mariadb-perl
when: ansible_distribution_major_version is version('12', '=')
- name: Read debian-sys-maint password (Debian < 11)
shell: 'cat /etc/mysql/debian.cnf | grep -m1 "password = .*" | cut -d" " -f3'
register: mysql_debian_password
changed_when: False
check_mode: no
tags:
- mysql
when: ansible_distribution_major_version is version('11', '<')
- name: Configure mytop (Debian < 11)
template:
src: mytop.j2
dest: /root/.mytop
mode: "0600"
force: yes
tags:
- mytop
- mysql
when: ansible_distribution_major_version is version('11', '<')
- name: Configure mytop (Debian >= 11)
template:
src: mytop.bullseye.j2
dest: /root/.mytop
mode: "0600"
force: yes
tags:
- mytop
- mysql
when: ansible_distribution_major_version is version('11', '>=')
# mysqltuner
- include_role:
name: evolix/remount-usr
when: _mysql_scripts_dir is search("/usr")
- name: Install mysqltuner
# copy:
# src: mysqltuner.pl
# dest: "{{ _mysql_scripts_dir }}/mysqltuner.pl"
# mode: "0700"
apt:
name: mysqltuner
state: present
tags:
- mysql
- mysqltuner
- name: Install aha
apt:
name: aha
tags:
- mysql
# Percona Toolkit
- name: "Install percona-toolkit (Debian 9 or later)"
apt:
name: percona-toolkit
state: present
tags:
- packages
- percona-toolkit
- mysql
when: ansible_distribution_major_version is version('9', '>=')
# automatic optimizations
- include_role:
name: evolix/remount-usr
when: _mysql_scripts_dir is search("/usr")
- name: Optimize script for MySQL
copy:
src: mysql-optimize.sh
dest: "{{ _mysql_scripts_dir }}/mysql-optimize.sh"
mode: "0700"
tags:
- mysql
- name: "Cron dir for optimize is present"
file:
path: "/etc/cron.{{ mysql_cron_optimize_frequency | mandatory }}"
state: directory
mode: "0755"
owner: root
group: root
- name: "Enable cron to optimize MySQL"
file:
src: "{{ _mysql_scripts_dir }}/mysql-optimize.sh"
dest: /etc/cron.{{ mysql_cron_optimize_frequency | mandatory }}/mysql-optimize.sh
state: link
when: mysql_cron_optimize | bool
tags:
- mysql
- name: "Disable cron to optimize MySQL"
file:
dest: /etc/cron.{{ mysql_cron_optimize_frequency | mandatory }}/mysql-optimize.sh
state: absent
when: not (mysql_cron_optimize | bool)
tags:
- mysql
- name: "Cron dir for mysqltuner is present"
file:
path: "/etc/cron.{{ mysql_cron_mysqltuner_frequency | mandatory }}"
state: directory
mode: "0755"
owner: root
group: root
- name: "Enable mysqltuner in cron"
copy:
src: mysqltuner.cron.sh
dest: /etc/cron.{{ mysql_cron_mysqltuner_frequency | mandatory }}/mysqltuner.sh
mode: "0755"
when: mysql_cron_mysqltuner | bool
tags:
- mysql
- name: "Disable mysqltuner in cron"
file:
dest: /etc/cron.{{ mysql_cron_mysqltuner_frequency | mandatory }}/mysqltuner.sh
state: absent
when: not (mysql_cron_mysqltuner | bool)
tags:
- mysql
# my-add.sh
- include_role:
name: evolix/remount-usr
when: _mysql_scripts_dir is search("/usr")
- name: Install my-add.sh
copy:
src: my-add.sh
dest: "{{ _mysql_scripts_dir }}/my-add.sh"
mode: "0700"
force: "{{ mysql_force_myadd_script }}"
tags:
- mysql
- name: Install apg
apt:
name: apg
tags:
- mysql
- packages
- name: "Install save_mysql_processlist.sh"
copy:
src: save_mysql_processlist.sh
dest: "{{ _mysql_scripts_dir }}/save_mysql_processlist.sh"
mode: "0755"
force: no
tags:
- mysql
- name: "Install mysql_connections"
copy:
src: mysql_connections.sh
dest: "{{ _mysql_scripts_dir }}/mysql_connections"
mode: "0755"
force: no
tags:
- mysql
- name: "Install mysql-queries-killer.sh"
copy:
src: mysql-queries-killer.sh
dest: "{{ _mysql_scripts_dir }}/mysql-queries-killer.sh"
mode: "0755"
force: no
tags:
- mysql
- name: "Install evomariabackup"
copy:
src: evomariabackup.sh
dest: "{{ _mysql_scripts_dir }}/evomariabackup"
mode: "0755"
force: no
tags:
- mysql