diff --git a/roles/services/defaults/main.yaml b/roles/services/defaults/main.yaml index c326c4f..646f9e9 100644 --- a/roles/services/defaults/main.yaml +++ b/roles/services/defaults/main.yaml @@ -1,6 +1,29 @@ mariadb_base_packages: - mariadb-server - mariadb-backup + - pmm2-client mariadb_requeriments: - curl - - apt-transport-https \ No newline at end of file + - apt-transport-https +required_directories: + - { path: /mnt/local-backup, owner: root, group: root, mode: 'u=rwx,g=rx,o=rx' } + - { path: /mnt/mysqlbin, owner: root, group: root, mode: 'u=rwx,g=rx,o=rx' } + - { path: /mnt/mysqltmp, owner: root, group: root, mode: 'u=rwx,g=rwx,o=rwxt' } + - { path: /mnt/mysqlbin/binlog, owner: mysql, group: mysql, mode: 'u=rwx,g=,o=' } + - { path: /root/scripts, owner: root, group: root, mode: 'u=rwx,g=rx,o=rx' } + - { path: /root/mariabackup, owner: root, group: root, mode: 'u=rwx,g=rx,o=rx' } +required_files_and_mariabackup_files_and_root_scripts: + - { src: "mariadb_override.conf", dest: "/etc/systemd/system/mariadb.service.d/override.conf", mode: "u=rw,g=r,o=r" } + - { src: "files/mariabackup/bacula-before.sh", dest: "/root/mariabackup/bacula-before.sh", mode: "u=rwx,g=rx,o=rx" } + - { src: "files/mariabackup/config.sh", dest: "/root/mariabackup/config.sh", mode: "u=rwx,g=rx,o=x" } + - { src: "files/mariabackup/inc-backup.sh", dest: "/root/mariabackup/inc-backup.sh", mode: "u=rwx,g=rx,o=rx" } + - { src: "files/mariabackup/my.cnf", dest: "/root/mariabackup/my.cnf", mode: "u=rw,g=,o=" } + - { src: "files/mariabackup/restore-backup.sh", dest: "/root/mariabackup/restore-backup.sh", mode: "u=rwx,g=rx,o=rx" } + - { src: "files/scripts/check-memory.sh", dest: "/root/scripts/check-memory.sh", mode: "u=rwx,g=rx,o=rx" } + - { src: "files/scripts/export-privs.sh", dest: "/root/scripts/export-privs.sh", mode: "u=rwx,g=rx,o=rx" } + - { src: "files/scripts/mysqltuner.pl", dest: "/root/scripts/mysqltuner.pl", mode: "u=rwx,g=rx,o=rx" } + - { src: "files/scripts/promote-master.sh", dest: "/root/scripts/promote-master.sh", mode: "u=rwx,g=rx,o=rx" } + - { src: "files/scripts/promote-slave.sh", dest: "/root/scripts/promote-slave.sh", mode: "u=rwx,g=rx,o=rx" } + - { src: "files/scripts/README.md", dest: "/root/scripts/README.md", mode: "u=rw,g=r,o=r" } + - { src: "files/scripts/scheduler-log.sh", dest: "/root/scripts/scheduler-log.sh", mode: "u=rwx,g=rx,o=rx" } + - { src: "files/scripts/sync-conf.sh", dest: "/root/scripts/sync-conf.sh", mode: "u=rwx,g=rx,o=rx" } diff --git a/roles/services/tasks/mariadb.yml b/roles/services/tasks/mariadb.yml index 514f8b4..1f18ef7 100644 --- a/roles/services/tasks/mariadb.yml +++ b/roles/services/tasks/mariadb.yml @@ -1,6 +1,3 @@ -# Percona things pmm2-client https://docs.percona.com/percona-monitoring-and-management/setting-up/client/index.html#package-manager -# Add backup directory custom scripts - - name: Ensure Install requirements for MariaDB repository setup script apt: name: "{{ mariadb_requeriments }}" @@ -11,13 +8,25 @@ get_url: url: "https://r.mariadb.com/downloads/mariadb_repo_setup" dest: "/tmp/mariadb_repo_setup" - mode: "u=rwx,g=rx,o=rx" + mode: "u=rwx,g=rx,o=rx" - name: Run MariaDB repository setup script command: cmd: "/bin/bash /tmp/mariadb_repo_setup --mariadb-server-version=10.11.10" creates: "/etc/apt/sources.list.d/mariadb.list" +- name: Download Percona repository package + get_url: + url: "https://repo.percona.com/apt/percona-release_latest.generic_all.deb" + dest: "/tmp/percona-release_latest.generic_all.deb" + mode: "u=rw,g=r,o=r" + +- name: Install Percona repository package + apt: + deb: "/tmp/percona-release_latest.generic_all.deb" + state: present + install_recommends: no + - name: Install MariaDB packages apt: name: "{{ mariadb_base_packages }}" @@ -31,48 +40,29 @@ owner: "{{ item.owner }}" group: "{{ item.group }}" mode: "{{ item.mode }}" - loop: - - { path: /mnt/local-backup, owner: root, group: root, mode: 'u=rwx,g=rx,o=rx' } - - { path: /mnt/mysqlbin, owner: root, group: root, mode: 'u=rwx,g=rx,o=rx' } - - { path: /mnt/mysqltmp, owner: root, group: root, mode: 'u=rwx,g=rwx,o=rwxt' } - - { path: /mnt/mysqlbin/binlog, owner: mysql, group: mysql, mode: 'u=rwx,g=,o=' } - - { path: /var/log/mysql, owner: mysql, group: adm, mode: 'u=rwx,g=rxs,o=' } - - { path: /root/scripts, owner: root, group: root, mode: 'u=rwx,g=rx,o=rx'} - - { path: /etc/systemd/system/mariadb.service.d, owner: root, group: root, mode: 'u=rwx,g=rx,o=rx' } + loop: "{{ required_directories }}" -- name: Ensure required files are copied to their destinations +- name: Ensure required custom and Mariabackup files are copied to their destinations and root scripts copy: src: "{{ item.src }}" dest: "{{ item.dest }}" owner: root group: root mode: "{{ item.mode }}" - loop: - - { src: 'files/scripts/README.md', dest: '/root/scripts/README.md', mode: 'u=rw,g=r,o=r' } - - { src: 'mariadb_override.conf', dest: '/etc/systemd/system/mariadb.service.d/override.conf', mode: 'u=rw,g=r,o=r' } - - { src: 'files/scripts/mysqltuner.pl', dest: '/root/scripts/mysqltuner.pl', mode: 'u=rwx,g=rx,o=rx' } + loop: "{{ required_files_and_mariabackup_files_and_root_scripts }}" notify: reload systemd -- name: Set MariaDB custom root scripts - copy: - src: "{{ item }}" - dest: /root/scripts/ - owner: root - group: root - mode: u=rwx,g=rx,o=rx - with_fileglob: - - "files/scripts/*.sh" - - name: Add tmpfs in /etc/fstab blockinfile: path: /etc/fstab marker: "# {mark} ANSIBLE-MANAGED TMPFS ENTRY" block: | tmpfs /mnt/mysqltmp tmpfs rw,size=6144M 0 0 + register: fstab - name: Mount all filesystems from /etc/fstab command: mount -a - #when: ansible_facts.mounts | selectattr('mount', 'equalto', '/mnt/mysqltmp') | list | length == 0 + when: fstab.changed - name: Set MariaDB Cron to /etc/cron.d template: