154 lines
4.6 KiB
YAML
154 lines
4.6 KiB
YAML
---
|
|
- name: Verify
|
|
hosts: all
|
|
gather_facts: true
|
|
|
|
tasks:
|
|
- name: Load OS-specific vars
|
|
ansible.builtin.include_vars: "{{ lookup('first_found', params) }}"
|
|
vars:
|
|
params:
|
|
files:
|
|
- "{{ ansible_distribution }}.yml"
|
|
- "{{ ansible_os_family }}.yml"
|
|
paths:
|
|
- "vars"
|
|
|
|
- name: Verify pkg status
|
|
ansible.builtin.package:
|
|
name: "{{ mariadb_server_package }}"
|
|
state: present
|
|
check_mode: true
|
|
register: pkg_status
|
|
|
|
- name: Check that {{ mariadb_server_package }} already installed
|
|
ansible.builtin.assert:
|
|
that: not pkg_status.changed
|
|
fail_msg: "{{ mariadb_server_package }} is not installed"
|
|
|
|
- name: Register {{ mariadb_config_file }}
|
|
ansible.builtin.stat:
|
|
path: "{{ mariadb_config_file }}"
|
|
register: conf
|
|
|
|
- name: Check {{ mariadb_config_file }}
|
|
ansible.builtin.assert:
|
|
that:
|
|
- conf.stat.exists is true
|
|
- conf.stat.pw_name == 'root'
|
|
- conf.stat.gr_name == 'root'
|
|
|
|
- name: Register {{ mariadb_data_dir }}
|
|
ansible.builtin.stat:
|
|
path: "{{ mariadb_data_dir }}"
|
|
register: datadir
|
|
|
|
- name: Check {{ mariadb_data_dir }}
|
|
ansible.builtin.assert:
|
|
that:
|
|
- datadir.stat.isdir is true
|
|
- datadir.stat.pw_name == mariadb_user
|
|
- datadir.stat.gr_name == mariadb_user
|
|
|
|
- name: Register {{ mariadb_log_dir }}
|
|
ansible.builtin.stat:
|
|
path: "{{ mariadb_log_dir }}"
|
|
register: logdir
|
|
|
|
- name: Check {{ mariadb_log_dir }}
|
|
ansible.builtin.assert:
|
|
that:
|
|
- logdir.stat.isdir is true
|
|
- logdir.stat.pw_name == mariadb_user
|
|
- logdir.stat.gr_name == mariadb_user
|
|
|
|
- name: Make sure that service is started
|
|
ansible.builtin.service:
|
|
name: mariadb
|
|
state: started
|
|
register: status
|
|
failed_when: status.changed
|
|
|
|
- name: Make sure that service is enabled
|
|
ansible.builtin.service:
|
|
name: mariadb
|
|
state: enabled
|
|
register: status
|
|
failed_when: status.changed
|
|
|
|
- name: Check that 127.0.0.1:3306 is listening
|
|
ansible.builtin.wait_for:
|
|
port: 3306
|
|
timeout: 2
|
|
|
|
- name: Get MariaDB version
|
|
ansible.builtin.shell: |
|
|
mariadb -Bse 'STATUS' | grep "^Server version:"
|
|
register: version
|
|
when: lookup('env', 'MARIADB_VERSION') is true
|
|
|
|
- name: Check MariaDB version
|
|
ansible.builtin.assert:
|
|
that:
|
|
- lookup('env', 'MARIADB_VERSION') in version.stdout
|
|
msg: "{{ version.stdout }}"
|
|
when: lookup('env', 'MARIADB_VERSION') is true
|
|
|
|
- name: Check that Innodb engine is enabled (and default)
|
|
ansible.builtin.shell: |
|
|
mariadb -Bse 'SHOW ENGINES' | grep -qE '^InnoDB.DEFAULT.*YES.YES.YES$'
|
|
|
|
- name: Check that default db exist
|
|
ansible.builtin.shell: |
|
|
mariadb -Bse 'SHOW DATABASES' | grep -q '^{{ item }}$'
|
|
loop:
|
|
- mysql
|
|
- information_schema
|
|
- performance_schema
|
|
|
|
- name: Check that test db exist
|
|
ansible.builtin.shell: |
|
|
mariadb -Bse 'SHOW DATABASES' | grep -q '^{{ item }}$'
|
|
loop:
|
|
- db1
|
|
- db2
|
|
|
|
- name: Check that test users exist
|
|
ansible.builtin.shell: |
|
|
mariadb -Bse 'SELECT user from mysql.user' | grep -q '^{{ item }}$'
|
|
loop:
|
|
- user1
|
|
- user2
|
|
- user3
|
|
|
|
- name: Do some SQL queries
|
|
ansible.builtin.shell: |
|
|
mariadb -Bse 'DROP DATABASE IF EXIST db'
|
|
mariadb -Bse 'CREATE DATABASE db'
|
|
mariadb -e 'CREATE TABLE db.t_innodb(a1 SERIAL, c1 CHAR(8)) ENGINE=InnoDB; INSERT INTO db.t_innodb VALUES (1,"foo"),(2,"bar")'
|
|
mariadb -e 'CREATE FUNCTION db.f() RETURNS INT DETERMINISTIC RETURN 1'
|
|
mariadb -e 'SHOW TABLES IN db'
|
|
mariadb -e 'SELECT * FROM db.t_innodb; INSERT INTO db.t_innodb VALUES (3,"foo"),(4,"bar")'
|
|
mariadb -e 'SELECT db.f()'
|
|
|
|
- name: Check if backup is working (mariadb-dump)
|
|
ansible.builtin.shell: |
|
|
if command -v mariadb-dump >/dev/null; then
|
|
MARIADB_DUMP="mariadb-dump"
|
|
else
|
|
MARIADB_DUMP="mysqldump"
|
|
fi
|
|
$MARIADB_DUMP -u root -x -A >/tmp/mariadb-dump.sql
|
|
|
|
- name: Check if backup is working (mariadb-backup)
|
|
ansible.builtin.shell: |
|
|
mkdir /tmp/backup
|
|
if command -v mariadb-backup >/dev/null; then
|
|
MARIADB_BACKUP="mariadb-backup"
|
|
else
|
|
MARIADB_BACKUP="mariabackup"
|
|
fi
|
|
$MARIADB_BACKUP --backup \
|
|
--target-dir=/tmp/backup \
|
|
--user=root
|