mariadb-install.yml (3543B)
---
- name: MariaDB installation
hosts: all
become: yes
become_user: root
become_method: sudo
tasks:
- name: include variables
include_vars:
file: ../../inventories/common/db_variables.yml
- name: Gather service facts
service_facts:
- name: Gather package facts
package_facts:
manager: auto
- name: exit if mariadb service is running
fail:
msg: "Playbook halted: MariaDB service is actively running on this host."
when:
- "'mariadb.service' in ansible_facts.services"
- "ansible_facts.services['mariadb.service'].state == 'running'"
- name: exit if mariadb-server is already installed
fail:
msg: "Playbook halted: mariadb-server package is already installed on this host."
when: "'mariadb-server' in ansible_facts.packages"
- name: Install prerequisite packages
apt:
name:
- apt-transport-https
- ca-certificates
- gnupg
state: present
update_cache: true
- name: Download MariaDB signing key
get_url:
url: "{{ key_url }}"
dest: /usr/share/keyrings/mariadb-keyring.asc
mode: '0644'
- name: Add MariaDB APT repository
apt_repository:
repo: "{{ repo_deb }}"
state: present
filename: mariadb
- name: Install mariadb packages
apt:
name: "{{ mariadb_packages }}"
state: present
update_cache: true
- name: lookup mysql user
ansible.builtin.getent:
database: passwd
key: mysql
fail_key: false
- name: exit if user not present
fail:
msg: "Playbook halted: mysql user is not present"
when: "'mysql' not in ansible_facts.getent_passwd or ansible_facts.getent_passwd['mysql'] == None"
- name: Ensure /etc/my.cnf.d exists
file:
path: /etc/my.cnf.d
state: directory
owner: root
group: root
mode: '0755'
- name: create zz-local.cnf with specific params
copy:
src: ../../files/zz-local.cnf
dest: /etc/my.cnf.d/zz-local.cnf
owner: root
group: root
mode: '0644'
- name: Check /var/lib/mysql/.log exists
stat:
path: /var/lib/mysql/.log
register: log_dir
- name: create it if it does not
file:
path: /var/lib/mysql/.log
state: directory
owner: mysql
group: mysql
mode: '0755'
when: log_dir.stat.exists == false
- name: Check /var/lib/mysql/.tmp exists
stat:
path: /var/lib/mysql/.tmp
register: tmp_dir
- name: create it if it does not
file:
path: /var/lib/mysql/.tmp
state: directory
owner: mysql
group: mysql
mode: '0755'
when: tmp_dir.stat.exists == false
- name: check /etc/systemd/system/mariadb.service.d exists
file:
path: /etc/systemd/system/mariadb.service.d
state: directory
owner: root
group: root
mode: '0755'
- name: create systemd override with specified params
copy:
src: ../../files/override.conf
dest: /etc/systemd/system/mariadb.service.d/override.conf
owner: root
group: root
mode: '0644'
- name: reload systemd unit file definitions
command: systemctl daemon-reload
- name: start mariadb
systemd:
name: mariadb
state: started
enabled: true