ansible-role-mariadb-debian/molecule/default/verify.yml

139 lines
4.1 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_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')
- lookup('env', 'MARIADB_VERSION') not in '11.rc'
- lookup('env', 'MARIADB_VERSION') not in '11.rolling'
- name: Check MariaDB version
ansible.builtin.assert:
that:
- lookup('env', 'MARIADB_VERSION') in version.stdout
msg: "{{ version.stdout }}"
when:
- lookup('env', 'MARIADB_VERSION')
- lookup('env', 'MARIADB_VERSION') not in '11.rc'
- lookup('env', 'MARIADB_VERSION') not in '11.rolling'
- 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()'