--- - 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_package }}" state: present check_mode: true register: pkg_status - name: Check that {{ mariadb_package }} already installed ansible.builtin.assert: that: not pkg_status.changed fail_msg: "{{ mariadb_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') - name: Check MariaDB version ansible.builtin.assert: that: - lookup('env', 'MARIADB_VERSION') in version.stdout msg: "{{ version.stdout }}" when: lookup('env', 'MARIADB_VERSION') - 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: 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()'