diff --git a/.github/workflows/molecule.mysql.yaml b/.github/workflows/molecule.mysql.yaml index 5adc6b401..7dbe125ad 100644 --- a/.github/workflows/molecule.mysql.yaml +++ b/.github/workflows/molecule.mysql.yaml @@ -27,4 +27,4 @@ jobs: with: debug: ${{ inputs.debug == true }} scenario: mysql - versions: '[5.7, "8.0", "galera.4.10.mysql_wsrep.8.0.26", "mariadb.10.3", "mariadb.10.4", "mariadb.10.5", "mariadb.10.6", "mariadb.10.11"]' + versions: '[5.7, "8.0", "galera.4.10.mysql_wsrep.8.0.26", "mariadb.10.3", "mariadb.10.4", "mariadb.10.5", "mariadb.10.6", "mariadb.10.11", "mariadb.11.4"]' diff --git a/CHANGELOG.md b/CHANGELOG.md index e62ca0662..f38501587 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/). ## [Unreleased] ### Added - [Apt] Add HAProxy 3.0 repository +- [Apt] MariaDB 11.4 support +- [MySQL] MariaDB 11.4 support ## [4.1.0] - 2024-07-03 ### Added diff --git a/molecule/mysql.mariadb.10.11/converge.yml b/molecule/mysql.mariadb.10.11/converge.yml index bd3393aee..c61976938 100644 --- a/molecule/mysql.mariadb.10.11/converge.yml +++ b/molecule/mysql.mariadb.10.11/converge.yml @@ -22,338 +22,7 @@ host: localhost priv: "*.*:ALL,GRANT" login_unix_socket: /var/run/mysqld/mysqld.sock - manala_mysql_databases: - - name: foo - login_unix_socket: /var/run/mysqld/mysqld.sock - - name: Goss - ansible.builtin.command: - cmd: goss --gossfile - validate - stdin: "{{ lookup('ansible.builtin.template', 'goss/default.yaml.j2') }}" - changed_when: false - -################### -# Default pymysql # -################### - -- name: Default PyMySQL - tags: [default, default.pymysql] - hosts: debian - tasks: - - block: # noqa name[missing] - - name: Role - ansible.builtin.import_role: - name: manala.roles.mysql - vars: - manala_mysql_install_python_packages: | - {{ - (ansible_facts.python.version.major == 2) | ternary( - ['python-pymysql'], - ['python3-pymysql'] - ) - }} - manala_mysql_install_packages: - - mariadb-server - - mariadb-client - manala_mysql_users: - - name: foo - password: foo - priv: "*.*:ALL,GRANT" - login_unix_socket: /var/run/mysqld/mysqld.sock - manala_mysql_databases: - - name: foo - login_unix_socket: /var/run/mysqld/mysqld.sock - - name: Goss - ansible.builtin.command: - cmd: goss --gossfile - validate - stdin: "{{ lookup('ansible.builtin.template', 'goss/default.yaml.j2') }}" - changed_when: false - - name: Cleanup - ansible.builtin.apt: - name: "{{ manala_mysql_install_python_packages }}" - state: absent - -########## -# Client # -########## - -- name: Client - tags: [client] - hosts: debian - tasks: - - name: Packages absent - ansible.builtin.apt: - name: - - mariadb-server - - mariadb-client - state: absent - - block: # noqa name[missing] - - name: Role - ansible.builtin.import_role: - name: manala.roles.mysql - vars: - manala_mysql_server: false - manala_mysql_install_packages: - - mariadb-client - always: - - name: Goss - ansible.builtin.command: - cmd: goss --gossfile - validate - stdin: "{{ lookup('ansible.builtin.template', 'goss/client.yaml.j2') }}" - changed_when: false - -########## -# Config # -########## - -- name: Config - tags: [config] - hosts: debian - vars: - tests_dir: /molecule/mysql/config - tasks: - - name: Clean tests dir # noqa risky-file-permissions args[module] - ansible.builtin.file: - path: "{{ tests_dir }}" - state: "{{ item }}" - loop: [absent, directory] - - block: # noqa name[missing] - - name: Role - Dict - ansible.builtin.import_role: - # Play role fully on first run, so that handlers don't breaks - name: manala.roles.mysql - vars: - manala_mysql_install_packages: - - mariadb-server - - mariadb-client - manala_mysql_config_file: "{{ tests_dir }}/dict" - manala_mysql_config_template: ~ - manala_mysql_config: - mysqld: - bind-address: 1.2.3.4 - pid-file: /var/run/mysqld/mysqld.pid - - name: Role - Content - ansible.builtin.import_role: - name: manala.roles.mysql - tasks_from: config - vars: - manala_mysql_config_file: "{{ tests_dir }}/content" - manala_mysql_config_template: ~ - manala_mysql_config: | - Content - - name: Role - Template - ansible.builtin.import_role: - name: manala.roles.mysql - tasks_from: config - vars: - manala_mysql_config_file: "{{ tests_dir }}/template" - manala_mysql_config_template: fixtures/template.j2 - manala_mysql_config: ~ - always: - - name: Goss - ansible.builtin.command: - cmd: goss --gossfile - validate - stdin: "{{ lookup('ansible.builtin.template', 'goss/config.yaml.j2') }}" - changed_when: false - -########### -# Configs # -########### - -- name: Configs - tags: [configs] - hosts: debian - vars: - tests_dir: /molecule/mysql/configs - tasks: - - name: Clean tests dir # noqa risky-file-permissions args[module] - ansible.builtin.file: - path: "{{ tests_dir }}/{{ item.0 }}" - state: "{{ item.1 }}" - loop: "{{ ['default', 'defaults', 'exclusive'] | product(['absent', 'directory']) }}" - - name: Touch existing files # noqa risky-file-permissions - ansible.builtin.file: - path: "{{ tests_dir }}/{{ item }}" - state: touch - loop: [ - default/state_absent_existing, default/state_ignore_existing, - exclusive/existing, exclusive/existing_present, exclusive/existing_ignore, - ] - - block: # noqa name[missing] - - name: Role - Default - ansible.builtin.import_role: - # Play role fully on first run, so that handlers don't breaks - name: manala.roles.mysql - vars: - manala_mysql_install_packages: - - mariadb-server - - mariadb-client - manala_mysql_configs_exclusive: false - manala_mysql_configs_dir: "{{ tests_dir }}/default" - manala_mysql_configs_defaults: {} - manala_mysql_configs: - # Dict - - file: dict - config: - mysqld: - user: mysql - query_cache_size: 0 - gtid_mode: true - enforce_gtid_consistency: false - # Content - - file: content - config: | - Content - # Template - - file: template - template: fixtures/template.j2 - - template: fixtures/template_file.j2 - # Flatten - - - - file: flatten - # State - - file: state_present_implicit - - file: state_present - state: present - - file: state_absent - state: absent - - file: state_absent_existing - state: absent - - file: state_ignore - state: ignore - - file: state_ignore_existing - state: ignore - - name: Role - Defaults - ansible.builtin.import_role: - name: manala.roles.mysql - tasks_from: configs - vars: - manala_mysql_configs_exclusive: false - manala_mysql_configs_dir: "{{ tests_dir }}/defaults" - manala_mysql_configs_defaults: - template: fixtures/template.j2 - manala_mysql_configs: - - file: template - - template: fixtures/template_file.j2 - - file: template_overwrite - template: fixtures/template_file.j2 - - name: Role - Exclusive - ansible.builtin.import_role: - name: manala.roles.mysql - tasks_from: configs - vars: - manala_mysql_configs_exclusive: true - manala_mysql_configs_dir: "{{ tests_dir }}/exclusive" - manala_mysql_configs_defaults: {} - manala_mysql_configs: - - file: existing_present - - file: existing_ignore - state: ignore - - file: ignore - state: ignore - always: - - name: Goss - ansible.builtin.command: - cmd: goss --gossfile - validate - stdin: "{{ lookup('ansible.builtin.template', 'goss/configs.yaml.j2') }}" - changed_when: false - -######## -# Data # -######## - -- name: Data - tags: [data] - hosts: debian - vars: - tests_dir: /molecule/mysql/data - tasks: - - name: Clean tests dir # noqa risky-file-permissions args[module] - ansible.builtin.file: - path: "{{ tests_dir }}" - state: "{{ item }}" - loop: [absent, directory] - - block: # noqa name[missing] - - name: Role - ansible.builtin.import_role: - name: manala.roles.mysql - vars: - manala_mysql_install_packages: - - mariadb-server - - mariadb-client - manala_mysql_configs_dir: /etc/mysql/mariadb.conf.d - manala_mysql_configs: - - file: 90-datadir.cnf - config: | - [mysqld] - datadir = {{ tests_dir }}/data - manala_mysql_data_dir: "{{ tests_dir }}/data" - manala_mysql_data_dir_user: mysql - manala_mysql_data_dir_group: mysql - manala_mysql_data_dir_mode: "0750" - manala_mysql_data_dir_initialize: true - always: - - name: Goss - ansible.builtin.command: - cmd: goss --gossfile - validate - stdin: "{{ lookup('ansible.builtin.template', 'goss/data.yaml.j2') }}" - changed_when: false - -######### -# Users # -######### - -- name: Users - tags: [users] - hosts: debian - tasks: - - name: Role - Default - ansible.builtin.import_role: - # Play role fully on first run, to install python modules - name: manala.roles.mysql - vars: - manala_mysql_install_packages: - - mariadb-server - - mariadb-client - manala_mysql_users: - - name: bar - login_unix_socket: /var/run/mysqld/mysqld.sock - - name: Create users to absent/ignore later - community.mysql.mysql_user: - user: "{{ item }}" - state: present - login_unix_socket: /var/run/mysqld/mysqld.sock - loop: [ - state_absent_existing, state_ignore_existing, - ] - - block: # noqa name[missing] - - name: Role - ansible.builtin.import_role: - name: manala.roles.mysql - tasks_from: users - vars: - manala_mysql_users: - # Privileges and password - - name: foo - password: foo - host: localhost - priv: "*.*:ALL,GRANT" - login_unix_socket: /var/run/mysqld/mysqld.sock - # States - - name: state_present_implicit - login_unix_socket: /var/run/mysqld/mysqld.sock - - name: state_present - state: present - login_unix_socket: /var/run/mysqld/mysqld.sock - - name: state_absent - state: absent - login_unix_socket: /var/run/mysqld/mysqld.sock - - name: state_absent_existing - state: absent - login_unix_socket: /var/run/mysqld/mysqld.sock - - name: state_ignored - state: ignore - login_unix_socket: /var/run/mysqld/mysqld.sock - - name: state_ignore_existing + - name: bar state: ignore login_unix_socket: /var/run/mysqld/mysqld.sock # Flatten @@ -361,75 +30,20 @@ - name: baz password: baz host: localhost - priv: "*.*:ALL,GRANT" + priv: "*.*:ALL,GRANT" login_unix_socket: /var/run/mysqld/mysqld.sock - always: - - name: Goss - ansible.builtin.command: - cmd: goss --gossfile - validate - stdin: "{{ lookup('ansible.builtin.template', 'goss/users.yaml.j2') }}" - changed_when: false - -############# -# Databases # -############# - -- name: Databases - tags: [databases] - hosts: debian - tasks: - - name: Role - Default - ansible.builtin.import_role: - # Play role fully on first run, to install python modules - name: manala.roles.mysql - vars: - manala_mysql_install_packages: - - mariadb-server - - mariadb-client - manala_mysql_databases: - - name: bar - state: absent - login_unix_socket: /var/run/mysqld/mysqld.sock - - name: Create databases to absent/ignore later - community.mysql.mysql_db: - name: "{{ item }}" - state: present - login_unix_socket: /var/run/mysqld/mysqld.sock - loop: [ - state_absent_existing, state_ignore_existing, - ] - - block: # noqa name[missing] - - name: Role - ansible.builtin.import_role: - name: manala.roles.mysql - tasks_from: databases - vars: manala_mysql_databases: - # States - - name: state_present_implicit - login_unix_socket: /var/run/mysqld/mysqld.sock - - name: state_present - state: present - login_unix_socket: /var/run/mysqld/mysqld.sock - - name: state_absent - state: absent - login_unix_socket: /var/run/mysqld/mysqld.sock - - name: state_absent_existing - state: absent - login_unix_socket: /var/run/mysqld/mysqld.sock - - name: state_ignored - state: ignore + - name: foo login_unix_socket: /var/run/mysqld/mysqld.sock - - name: state_ignore_existing + - name: bar state: ignore login_unix_socket: /var/run/mysqld/mysqld.sock # Flatten - - name: baz login_unix_socket: /var/run/mysqld/mysqld.sock - always: - name: Goss ansible.builtin.command: cmd: goss --gossfile - validate - stdin: "{{ lookup('ansible.builtin.template', 'goss/databases.yaml.j2') }}" + stdin: "{{ lookup('ansible.builtin.template', 'goss/default.yaml.j2') }}" changed_when: false diff --git a/molecule/mysql.mariadb.11.4/converge.yml b/molecule/mysql.mariadb.11.4/converge.yml new file mode 100644 index 000000000..bd3393aee --- /dev/null +++ b/molecule/mysql.mariadb.11.4/converge.yml @@ -0,0 +1,435 @@ +--- + +########### +# Default # +########### + +- name: Default + tags: [default] + hosts: debian + tasks: + - block: # noqa name[missing] + - name: Role + ansible.builtin.import_role: + name: manala.roles.mysql + vars: + manala_mysql_install_packages: + - mariadb-server + - mariadb-client + manala_mysql_users: + - name: foo + password: foo + host: localhost + priv: "*.*:ALL,GRANT" + login_unix_socket: /var/run/mysqld/mysqld.sock + manala_mysql_databases: + - name: foo + login_unix_socket: /var/run/mysqld/mysqld.sock + - name: Goss + ansible.builtin.command: + cmd: goss --gossfile - validate + stdin: "{{ lookup('ansible.builtin.template', 'goss/default.yaml.j2') }}" + changed_when: false + +################### +# Default pymysql # +################### + +- name: Default PyMySQL + tags: [default, default.pymysql] + hosts: debian + tasks: + - block: # noqa name[missing] + - name: Role + ansible.builtin.import_role: + name: manala.roles.mysql + vars: + manala_mysql_install_python_packages: | + {{ + (ansible_facts.python.version.major == 2) | ternary( + ['python-pymysql'], + ['python3-pymysql'] + ) + }} + manala_mysql_install_packages: + - mariadb-server + - mariadb-client + manala_mysql_users: + - name: foo + password: foo + priv: "*.*:ALL,GRANT" + login_unix_socket: /var/run/mysqld/mysqld.sock + manala_mysql_databases: + - name: foo + login_unix_socket: /var/run/mysqld/mysqld.sock + - name: Goss + ansible.builtin.command: + cmd: goss --gossfile - validate + stdin: "{{ lookup('ansible.builtin.template', 'goss/default.yaml.j2') }}" + changed_when: false + - name: Cleanup + ansible.builtin.apt: + name: "{{ manala_mysql_install_python_packages }}" + state: absent + +########## +# Client # +########## + +- name: Client + tags: [client] + hosts: debian + tasks: + - name: Packages absent + ansible.builtin.apt: + name: + - mariadb-server + - mariadb-client + state: absent + - block: # noqa name[missing] + - name: Role + ansible.builtin.import_role: + name: manala.roles.mysql + vars: + manala_mysql_server: false + manala_mysql_install_packages: + - mariadb-client + always: + - name: Goss + ansible.builtin.command: + cmd: goss --gossfile - validate + stdin: "{{ lookup('ansible.builtin.template', 'goss/client.yaml.j2') }}" + changed_when: false + +########## +# Config # +########## + +- name: Config + tags: [config] + hosts: debian + vars: + tests_dir: /molecule/mysql/config + tasks: + - name: Clean tests dir # noqa risky-file-permissions args[module] + ansible.builtin.file: + path: "{{ tests_dir }}" + state: "{{ item }}" + loop: [absent, directory] + - block: # noqa name[missing] + - name: Role - Dict + ansible.builtin.import_role: + # Play role fully on first run, so that handlers don't breaks + name: manala.roles.mysql + vars: + manala_mysql_install_packages: + - mariadb-server + - mariadb-client + manala_mysql_config_file: "{{ tests_dir }}/dict" + manala_mysql_config_template: ~ + manala_mysql_config: + mysqld: + bind-address: 1.2.3.4 + pid-file: /var/run/mysqld/mysqld.pid + - name: Role - Content + ansible.builtin.import_role: + name: manala.roles.mysql + tasks_from: config + vars: + manala_mysql_config_file: "{{ tests_dir }}/content" + manala_mysql_config_template: ~ + manala_mysql_config: | + Content + - name: Role - Template + ansible.builtin.import_role: + name: manala.roles.mysql + tasks_from: config + vars: + manala_mysql_config_file: "{{ tests_dir }}/template" + manala_mysql_config_template: fixtures/template.j2 + manala_mysql_config: ~ + always: + - name: Goss + ansible.builtin.command: + cmd: goss --gossfile - validate + stdin: "{{ lookup('ansible.builtin.template', 'goss/config.yaml.j2') }}" + changed_when: false + +########### +# Configs # +########### + +- name: Configs + tags: [configs] + hosts: debian + vars: + tests_dir: /molecule/mysql/configs + tasks: + - name: Clean tests dir # noqa risky-file-permissions args[module] + ansible.builtin.file: + path: "{{ tests_dir }}/{{ item.0 }}" + state: "{{ item.1 }}" + loop: "{{ ['default', 'defaults', 'exclusive'] | product(['absent', 'directory']) }}" + - name: Touch existing files # noqa risky-file-permissions + ansible.builtin.file: + path: "{{ tests_dir }}/{{ item }}" + state: touch + loop: [ + default/state_absent_existing, default/state_ignore_existing, + exclusive/existing, exclusive/existing_present, exclusive/existing_ignore, + ] + - block: # noqa name[missing] + - name: Role - Default + ansible.builtin.import_role: + # Play role fully on first run, so that handlers don't breaks + name: manala.roles.mysql + vars: + manala_mysql_install_packages: + - mariadb-server + - mariadb-client + manala_mysql_configs_exclusive: false + manala_mysql_configs_dir: "{{ tests_dir }}/default" + manala_mysql_configs_defaults: {} + manala_mysql_configs: + # Dict + - file: dict + config: + mysqld: + user: mysql + query_cache_size: 0 + gtid_mode: true + enforce_gtid_consistency: false + # Content + - file: content + config: | + Content + # Template + - file: template + template: fixtures/template.j2 + - template: fixtures/template_file.j2 + # Flatten + - + - file: flatten + # State + - file: state_present_implicit + - file: state_present + state: present + - file: state_absent + state: absent + - file: state_absent_existing + state: absent + - file: state_ignore + state: ignore + - file: state_ignore_existing + state: ignore + - name: Role - Defaults + ansible.builtin.import_role: + name: manala.roles.mysql + tasks_from: configs + vars: + manala_mysql_configs_exclusive: false + manala_mysql_configs_dir: "{{ tests_dir }}/defaults" + manala_mysql_configs_defaults: + template: fixtures/template.j2 + manala_mysql_configs: + - file: template + - template: fixtures/template_file.j2 + - file: template_overwrite + template: fixtures/template_file.j2 + - name: Role - Exclusive + ansible.builtin.import_role: + name: manala.roles.mysql + tasks_from: configs + vars: + manala_mysql_configs_exclusive: true + manala_mysql_configs_dir: "{{ tests_dir }}/exclusive" + manala_mysql_configs_defaults: {} + manala_mysql_configs: + - file: existing_present + - file: existing_ignore + state: ignore + - file: ignore + state: ignore + always: + - name: Goss + ansible.builtin.command: + cmd: goss --gossfile - validate + stdin: "{{ lookup('ansible.builtin.template', 'goss/configs.yaml.j2') }}" + changed_when: false + +######## +# Data # +######## + +- name: Data + tags: [data] + hosts: debian + vars: + tests_dir: /molecule/mysql/data + tasks: + - name: Clean tests dir # noqa risky-file-permissions args[module] + ansible.builtin.file: + path: "{{ tests_dir }}" + state: "{{ item }}" + loop: [absent, directory] + - block: # noqa name[missing] + - name: Role + ansible.builtin.import_role: + name: manala.roles.mysql + vars: + manala_mysql_install_packages: + - mariadb-server + - mariadb-client + manala_mysql_configs_dir: /etc/mysql/mariadb.conf.d + manala_mysql_configs: + - file: 90-datadir.cnf + config: | + [mysqld] + datadir = {{ tests_dir }}/data + manala_mysql_data_dir: "{{ tests_dir }}/data" + manala_mysql_data_dir_user: mysql + manala_mysql_data_dir_group: mysql + manala_mysql_data_dir_mode: "0750" + manala_mysql_data_dir_initialize: true + always: + - name: Goss + ansible.builtin.command: + cmd: goss --gossfile - validate + stdin: "{{ lookup('ansible.builtin.template', 'goss/data.yaml.j2') }}" + changed_when: false + +######### +# Users # +######### + +- name: Users + tags: [users] + hosts: debian + tasks: + - name: Role - Default + ansible.builtin.import_role: + # Play role fully on first run, to install python modules + name: manala.roles.mysql + vars: + manala_mysql_install_packages: + - mariadb-server + - mariadb-client + manala_mysql_users: + - name: bar + login_unix_socket: /var/run/mysqld/mysqld.sock + - name: Create users to absent/ignore later + community.mysql.mysql_user: + user: "{{ item }}" + state: present + login_unix_socket: /var/run/mysqld/mysqld.sock + loop: [ + state_absent_existing, state_ignore_existing, + ] + - block: # noqa name[missing] + - name: Role + ansible.builtin.import_role: + name: manala.roles.mysql + tasks_from: users + vars: + manala_mysql_users: + # Privileges and password + - name: foo + password: foo + host: localhost + priv: "*.*:ALL,GRANT" + login_unix_socket: /var/run/mysqld/mysqld.sock + # States + - name: state_present_implicit + login_unix_socket: /var/run/mysqld/mysqld.sock + - name: state_present + state: present + login_unix_socket: /var/run/mysqld/mysqld.sock + - name: state_absent + state: absent + login_unix_socket: /var/run/mysqld/mysqld.sock + - name: state_absent_existing + state: absent + login_unix_socket: /var/run/mysqld/mysqld.sock + - name: state_ignored + state: ignore + login_unix_socket: /var/run/mysqld/mysqld.sock + - name: state_ignore_existing + state: ignore + login_unix_socket: /var/run/mysqld/mysqld.sock + # Flatten + - + - name: baz + password: baz + host: localhost + priv: "*.*:ALL,GRANT" + login_unix_socket: /var/run/mysqld/mysqld.sock + always: + - name: Goss + ansible.builtin.command: + cmd: goss --gossfile - validate + stdin: "{{ lookup('ansible.builtin.template', 'goss/users.yaml.j2') }}" + changed_when: false + +############# +# Databases # +############# + +- name: Databases + tags: [databases] + hosts: debian + tasks: + - name: Role - Default + ansible.builtin.import_role: + # Play role fully on first run, to install python modules + name: manala.roles.mysql + vars: + manala_mysql_install_packages: + - mariadb-server + - mariadb-client + manala_mysql_databases: + - name: bar + state: absent + login_unix_socket: /var/run/mysqld/mysqld.sock + - name: Create databases to absent/ignore later + community.mysql.mysql_db: + name: "{{ item }}" + state: present + login_unix_socket: /var/run/mysqld/mysqld.sock + loop: [ + state_absent_existing, state_ignore_existing, + ] + - block: # noqa name[missing] + - name: Role + ansible.builtin.import_role: + name: manala.roles.mysql + tasks_from: databases + vars: + manala_mysql_databases: + # States + - name: state_present_implicit + login_unix_socket: /var/run/mysqld/mysqld.sock + - name: state_present + state: present + login_unix_socket: /var/run/mysqld/mysqld.sock + - name: state_absent + state: absent + login_unix_socket: /var/run/mysqld/mysqld.sock + - name: state_absent_existing + state: absent + login_unix_socket: /var/run/mysqld/mysqld.sock + - name: state_ignored + state: ignore + login_unix_socket: /var/run/mysqld/mysqld.sock + - name: state_ignore_existing + state: ignore + login_unix_socket: /var/run/mysqld/mysqld.sock + # Flatten + - + - name: baz + login_unix_socket: /var/run/mysqld/mysqld.sock + always: + - name: Goss + ansible.builtin.command: + cmd: goss --gossfile - validate + stdin: "{{ lookup('ansible.builtin.template', 'goss/databases.yaml.j2') }}" + changed_when: false diff --git a/molecule/mysql.mariadb.11.4/fixtures/template.j2 b/molecule/mysql.mariadb.11.4/fixtures/template.j2 new file mode 100644 index 000000000..1cea569fe --- /dev/null +++ b/molecule/mysql.mariadb.11.4/fixtures/template.j2 @@ -0,0 +1 @@ +Template diff --git a/molecule/mysql.mariadb.11.4/fixtures/template_file.j2 b/molecule/mysql.mariadb.11.4/fixtures/template_file.j2 new file mode 100644 index 000000000..af5d85858 --- /dev/null +++ b/molecule/mysql.mariadb.11.4/fixtures/template_file.j2 @@ -0,0 +1 @@ +Template file diff --git a/molecule/mysql.mariadb.11.4/goss/client.yaml.j2 b/molecule/mysql.mariadb.11.4/goss/client.yaml.j2 new file mode 100644 index 000000000..2c10fb344 --- /dev/null +++ b/molecule/mysql.mariadb.11.4/goss/client.yaml.j2 @@ -0,0 +1,7 @@ +--- + +package: + mariadb-server: + installed: false + mariadb-client: + installed: true diff --git a/molecule/mysql.mariadb.11.4/goss/config.yaml.j2 b/molecule/mysql.mariadb.11.4/goss/config.yaml.j2 new file mode 100644 index 000000000..4dc00b983 --- /dev/null +++ b/molecule/mysql.mariadb.11.4/goss/config.yaml.j2 @@ -0,0 +1,29 @@ +--- + +file: + {{ tests_dir }}/dict: + exists: true + filetype: file + owner: root + group: root + mode: "0644" + contents: | + [mysqld] + bind-address = 1.2.3.4 + pid-file = /var/run/mysqld/mysqld.pid + {{ tests_dir }}/content: + exists: true + filetype: file + owner: root + group: root + mode: "0644" + contents: | + Content + {{ tests_dir }}/template: + exists: true + filetype: file + owner: root + group: root + mode: "0644" + contents: | + Template diff --git a/molecule/mysql.mariadb.11.4/goss/configs.yaml.j2 b/molecule/mysql.mariadb.11.4/goss/configs.yaml.j2 new file mode 100644 index 000000000..d7a6ce6a9 --- /dev/null +++ b/molecule/mysql.mariadb.11.4/goss/configs.yaml.j2 @@ -0,0 +1,112 @@ +--- + +file: + + # Default - Dict + {{ tests_dir }}/default/dict: + exists: true + filetype: file + owner: root + group: root + mode: "0644" + contents: | + [mysqld] + enforce_gtid_consistency = OFF + gtid_mode = ON + query_cache_size = 0 + user = mysql + # Default - Content + {{ tests_dir }}/default/content: + exists: true + filetype: file + owner: root + group: root + mode: "0644" + contents: | + Content + # Default - Template + {{ tests_dir }}/default/template: + exists: true + filetype: file + owner: root + group: root + mode: "0644" + contents: | + Template + {{ tests_dir }}/default/template_file: + exists: true + filetype: file + owner: root + group: root + mode: "0644" + contents: | + Template file + # Default - Flatten + {{ tests_dir }}/default/flatten: + exists: true + filetype: file + owner: root + group: root + mode: "0644" + # Default - State + {{ tests_dir }}/default/state_present_implicit: + exists: true + filetype: file + owner: root + group: root + mode: "0644" + {{ tests_dir }}/default/state_present: + exists: true + filetype: file + owner: root + group: root + mode: "0644" + {{ tests_dir }}/default/state_absent: + exists: false + {{ tests_dir }}/default/state_absent_existing: + exists: false + {{ tests_dir }}/default/state_ignore: + exists: false + {{ tests_dir }}/default/state_ignore_existing: + exists: true + filetype: file + + # Defaults + {{ tests_dir }}/defaults/template: + exists: true + filetype: file + owner: root + group: root + mode: "0644" + contents: | + Template + {{ tests_dir }}/defaults/template_file: + exists: true + filetype: file + owner: root + group: root + mode: "0644" + contents: | + Template file + {{ tests_dir }}/defaults/template_overwrite: + exists: true + filetype: file + owner: root + group: root + mode: "0644" + contents: | + Template file + + # Exclusive + {{ tests_dir }}/exclusive/existing: + exists: false + {{ tests_dir }}/exclusive/existing_present: + exists: true + filetype: file + owner: root + group: root + mode: "0644" + {{ tests_dir }}/exclusive/existing_ignore: + exists: false + {{ tests_dir }}/exclusive/ignore: + exists: false diff --git a/molecule/mysql.mariadb.11.4/goss/data.yaml.j2 b/molecule/mysql.mariadb.11.4/goss/data.yaml.j2 new file mode 100644 index 000000000..db02b724f --- /dev/null +++ b/molecule/mysql.mariadb.11.4/goss/data.yaml.j2 @@ -0,0 +1,18 @@ +--- + +file: + {{ tests_dir }}/data: + exists: true + filetype: directory + owner: mysql + group: mysql + mode: "0750" + {{ tests_dir }}/data/ibdata1: + exists: true + filetype: file + +command: + mariadb -BNe "SELECT @@GLOBAL.datadir": + exit-status: 0 + stdout: + - "{{ tests_dir }}/data" diff --git a/molecule/mysql.mariadb.11.4/goss/data_dir.yaml.j2 b/molecule/mysql.mariadb.11.4/goss/data_dir.yaml.j2 new file mode 100644 index 000000000..db02b724f --- /dev/null +++ b/molecule/mysql.mariadb.11.4/goss/data_dir.yaml.j2 @@ -0,0 +1,18 @@ +--- + +file: + {{ tests_dir }}/data: + exists: true + filetype: directory + owner: mysql + group: mysql + mode: "0750" + {{ tests_dir }}/data/ibdata1: + exists: true + filetype: file + +command: + mariadb -BNe "SELECT @@GLOBAL.datadir": + exit-status: 0 + stdout: + - "{{ tests_dir }}/data" diff --git a/molecule/mysql.mariadb.11.4/goss/databases.yaml.j2 b/molecule/mysql.mariadb.11.4/goss/databases.yaml.j2 new file mode 100644 index 000000000..7a191bfbc --- /dev/null +++ b/molecule/mysql.mariadb.11.4/goss/databases.yaml.j2 @@ -0,0 +1,12 @@ +--- + +command: + mariadb -u root --execute "show databases": + exit-status: 0 + stdout: + - state_present + - state_present_implicit + - "!state_absent" + - "!state_absent_existing" + - "!state_ignored" + - state_ignore_existing diff --git a/molecule/mysql.mariadb.11.4/goss/default.yaml.j2 b/molecule/mysql.mariadb.11.4/goss/default.yaml.j2 new file mode 100644 index 000000000..63cf4dceb --- /dev/null +++ b/molecule/mysql.mariadb.11.4/goss/default.yaml.j2 @@ -0,0 +1,33 @@ +--- + +package: + mariadb-server: + installed: true + mariadb-client: + installed: true + +command: + mariadb --version: + exit-status: 0 + stdout: + - "/mariadb from 11\.4\.(\d){1,2}-MariaDB/" + mysql -u root --execute "select user from mysql.user": + exit-status: 0 + stdout: + - foo + mysqladmin --user=foo --password=foo ping: + exit-status: 0 + stdout: + - "mysqld is alive" + mysql -u root --execute "show databases": + exit-status: 0 + stdout: + - foo + +service: + mysql: # Alias to mariadb + enabled: true + running: true + mariadb: + enabled: true + running: true diff --git a/molecule/mysql.mariadb.11.4/goss/users.yaml.j2 b/molecule/mysql.mariadb.11.4/goss/users.yaml.j2 new file mode 100644 index 000000000..d2a410460 --- /dev/null +++ b/molecule/mysql.mariadb.11.4/goss/users.yaml.j2 @@ -0,0 +1,22 @@ +--- + +command: + mysql -u root --execute "select user from mysql.user": + exit-status: 0 + stdout: + - foo + - baz + - state_present + - state_present_implicit + - "!state_absent" + - "!state_absent_existing" + - "!state_ignored" + - state_ignore_existing + mysqladmin --user=foo --password=foo ping: + exit-status: 0 + stdout: + - "mysqld is alive" + mysqladmin --user=baz --password=baz ping: + exit-status: 0 + stdout: + - "mysqld is alive" diff --git a/molecule/mysql.mariadb.11.4/molecule.yml b/molecule/mysql.mariadb.11.4/molecule.yml new file mode 100644 index 000000000..e69de29bb diff --git a/molecule/mysql.mariadb.11.4/prepare.yml b/molecule/mysql.mariadb.11.4/prepare.yml new file mode 100644 index 000000000..364185391 --- /dev/null +++ b/molecule/mysql.mariadb.11.4/prepare.yml @@ -0,0 +1,12 @@ +--- + +- name: Prepare + tags: [always] + hosts: debian + tasks: + - name: Apt + ansible.builtin.import_role: + name: manala.roles.apt + vars: + manala_apt_preferences: + - mariadb@mariadb_11_4 diff --git a/roles/apt/vars/main.yaml b/roles/apt/vars/main.yaml index 3d8e5a0ec..468015753 100644 --- a/roles/apt/vars/main.yaml +++ b/roles/apt/vars/main.yaml @@ -196,6 +196,11 @@ manala_apt_repositories_patterns: components: main key: mariadb legacy_file: downloads_mariadb_com_MariaDB_mariadb_10_6_repo_debian.list + mariadb_11_4: + uris: https://dlm.mariadb.com/repo/mariadb-server/11.4/repo/debian + suites: "{{ ansible_facts.distribution_release }}" + components: main + key: mariadb maxscale_2_4: uris: https://dlm.mariadb.com/repo/maxscale/2.4/apt suites: "{{ ansible_facts.distribution_release }}"