7c632352a0
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).
252 lines
5.4 KiB
YAML
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
|