ansible-roles/mysql/tasks/utils.yml

242 lines
5.2 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 9)"
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 or later)"
apt:
name:
- mariadb-client-10.5
- libconfig-inifiles-perl
- libterm-readkey-perl
- libdbd-mariadb-perl
when: ansible_distribution_major_version is version('11', '>=')
- 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