diff --git a/.github/workflows/general.yml b/.github/workflows/general.yml index 15a2fbc..1860b14 100644 --- a/.github/workflows/general.yml +++ b/.github/workflows/general.yml @@ -20,7 +20,7 @@ jobs: uses: actions/checkout@v4 - name: Role linting - uses: actionhippie/ansible-later@v2 + uses: actionhippie/ansible-later@v3 testing: runs-on: ubuntu-latest diff --git a/README.md b/README.md index 6e97ac2..8f2c75f 100644 --- a/README.md +++ b/README.md @@ -1145,7 +1145,7 @@ mariadb_username: ## Dependencies -- None +- [rolehippie.docker](https://github.com/rolehippie/docker) ## License diff --git a/handlers/main.yml b/handlers/main.yml index aaf42dc..5ac1192 100644 --- a/handlers/main.yml +++ b/handlers/main.yml @@ -1,12 +1,12 @@ --- - name: Restart mariadb - systemd: + ansible.builtin.systemd: name: mariadb state: restarted daemon_reload: True - name: Restart mariadb-exporter - systemd: + ansible.builtin.systemd: name: mariadb-exporter state: restarted daemon_reload: True diff --git a/meta/main.yml b/meta/main.yml index f3b538e..c4808c6 100644 --- a/meta/main.yml +++ b/meta/main.yml @@ -15,7 +15,7 @@ # Building and improving this Ansible role have been sponsored by my current and previous employers like **[Cloudpunks GmbH](https://cloudpunks.de)** and **[Proact Deutschland GmbH](https://www.proact.eu)**. # @end # @meta dependencies:value: > -# None +# [rolehippie.docker](https://github.com/rolehippie/docker) # @end galaxy_info: role_name: mariadb diff --git a/meta/requirements.yml b/meta/requirements.yml new file mode 100644 index 0000000..b138baa --- /dev/null +++ b/meta/requirements.yml @@ -0,0 +1,8 @@ +--- +collections: + - community.mysql + - community.docker + +roles: [] + +... diff --git a/molecule/default/prepare.yml b/molecule/default/prepare.yml index 113c1b0..2b6e8c7 100644 --- a/molecule/default/prepare.yml +++ b/molecule/default/prepare.yml @@ -4,22 +4,48 @@ gather_facts: False tasks: + - name: Stat apt dir + register: aptdir + ansible.builtin.stat: + path: /var/lib/apt + - name: Wait for aptlock - shell: while fuser /var/lib/apt/lists/lock >/dev/null 2>&1; do echo 'Waiting for apt list lock.' && sleep 10; done + when: aptdir.stat.exists changed_when: False + ansible.builtin.shell: + cmd: while fuser /var/lib/apt/lists/lock >/dev/null 2>&1; do echo 'Waiting for apt list lock.' && sleep 10; done - name: Update package cache - apt: + when: aptdir.stat.exists + ansible.builtin.apt: update_cache: True - - name: Install gpg dependency - apt: - name: python3-gpg + - name: Install test dependencies + when: aptdir.stat.exists + loop: + - python3-gpg + - curl + ansible.builtin.apt: + name: "{{ item }}" state: present - - name: Install curl dependency - apt: - name: curl - state: present + - name: Create man dirs + changed_when: False + loop: + - /usr/share/man/man1 + - /usr/share/man/man2 + - /usr/share/man/man3 + - /usr/share/man/man4 + - /usr/share/man/man5 + - /usr/share/man/man6 + - /usr/share/man/man7 + - /usr/share/man/man8 + - /usr/share/man/man9 + ansible.builtin.file: + path: "{{ item }}" + owner: root + group: root + mode: u=rwx,g=rx,o=rx + state: directory ... diff --git a/molecule/requirements.yml b/molecule/requirements.yml index 586fd81..b138baa 100644 --- a/molecule/requirements.yml +++ b/molecule/requirements.yml @@ -1,5 +1,8 @@ --- -collections: [] +collections: + - community.mysql + - community.docker + roles: [] ... diff --git a/tasks/exporter.yml b/tasks/exporter.yml index a954016..d263ad6 100644 --- a/tasks/exporter.yml +++ b/tasks/exporter.yml @@ -6,14 +6,14 @@ failed_when: False changed_when: False check_mode: False - shell: /usr/bin/mariadb-exporter --version 2>&1 + ansible.builtin.shell: /usr/bin/mariadb-exporter --version 2>&1 tags: - mariadb-exporter - name: Fact version change when: - mariadb_installation == 'native' - set_fact: + ansible.builtin.set_fact: mariadb_exporter_version_changed: "{{ mariadb_exporter_version_check.rc != 0 or (mariadb_exporter_version_check.stdout_lines is defined and mariadb_exporter_version not in mariadb_exporter_version_check.stdout_lines[0]) | bool }}" tags: - mariadb-exporter @@ -22,7 +22,7 @@ when: - mariadb_installation == 'native' - mariadb_exporter_version_changed - unarchive: + ansible.builtin.unarchive: src: "{{ mariadb_exporter_download }}" dest: /usr/local/src remote_src: True @@ -38,7 +38,7 @@ - not ansible_check_mode notify: - Restart mariadb-exporter - copy: + ansible.builtin.copy: src: "/usr/local/src/mysqld_exporter-{{ mariadb_exporter_version }}.linux-amd64/mysqld_exporter" dest: /usr/bin/mariadb-exporter remote_src: True @@ -51,7 +51,7 @@ - name: Write default config notify: - Restart mariadb-exporter - template: + ansible.builtin.template: src: exporter/default.j2 dest: /etc/default/mariadb-exporter owner: root @@ -63,7 +63,7 @@ - name: Write service file notify: - Restart mariadb-exporter - template: + ansible.builtin.template: src: exporter/service.j2 dest: /etc/systemd/system/mariadb-exporter.service owner: root @@ -76,7 +76,7 @@ when: - mariadb_installation == 'docker' - mariadb_exporter_pull_image - docker_image: + community.docker.docker_image: name: "{{ mariadb_exporter_image }}" source: pull tags: @@ -86,14 +86,14 @@ when: - mariadb_installation == 'docker' - mariadb_exporter_network | default(False) - docker_network: + community.docker.docker_network: name: '{{ mariadb_exporter_network }}' tags: - mariadb-exporter - name: Start mariadb-exporter service ignore_errors: "{{ ansible_check_mode }}" - systemd: + ansible.builtin.systemd: name: mariadb-exporter state: started daemon_reload: True @@ -105,7 +105,7 @@ - name: Remove install directory when: - mariadb_installation == 'native' - file: + ansible.builtin.file: path: "/usr/local/src/mysqld_exporter-{{ mariadb_exporter_version }}.linux-amd64" state: absent tags: diff --git a/tasks/galera.yml b/tasks/galera.yml index 52ec252..c8e943c 100644 --- a/tasks/galera.yml +++ b/tasks/galera.yml @@ -3,7 +3,7 @@ register: mariadb_galera_status delegate_to: "{{ mariadb_galera_primary | default('dummy') }}" run_once: True - mysql_info: + community.mysql.mysql_info: filter: settings login_unix_socket: /var/run/mysqld/mysqld.sock login_user: "{{ mariadb_root_username }}" @@ -14,7 +14,7 @@ - name: Stop mariadb services when: - mariadb_galera_status.settings.wsrep_on == 'OFF' - systemd: + ansible.builtin.systemd: name: mariadb state: stopped daemon_reload: True @@ -29,7 +29,7 @@ - inventory_hostname == mariadb_galera_primary vars: mariadb_galera_nodes: [] - template: + ansible.builtin.template: src: galera.j2 dest: /etc/mysql/mariadb.conf.d/60-galera.cnf owner: root @@ -42,7 +42,7 @@ when: - mariadb_galera_status.settings.wsrep_on == 'OFF' - inventory_hostname == mariadb_galera_primary - command: galera_new_cluster + ansible.builtin.command: galera_new_cluster tags: - mariadb @@ -50,7 +50,7 @@ when: - mariadb_galera_status.settings.wsrep_on == 'OFF' - inventory_hostname == mariadb_galera_primary - template: + ansible.builtin.template: src: galera.j2 dest: /etc/mysql/mariadb.conf.d/60-galera.cnf owner: root @@ -62,7 +62,7 @@ - name: Start galera cluster when: - mariadb_galera_status.settings.wsrep_on == 'OFF' - systemd: + ansible.builtin.systemd: name: mariadb state: started daemon_reload: True diff --git a/tasks/main.yml b/tasks/main.yml index 32cdc10..68fb4d5 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -2,7 +2,7 @@ - name: Remove legacy key when: - mariadb_installation == 'native' - apt_key: + ansible.builtin.apt_key: id: 177F4010FE56CA3336300305F1656F24C74CD1D8 state: absent tags: @@ -11,7 +11,7 @@ - name: Remove legacy repo when: - mariadb_installation == 'native' - apt_repository: + ansible.builtin.apt_repository: repo: "deb [arch={{ mariadb_upstream_arch }}] {{ mariadb_upstream_mirror }}/{{ mariadb_upstream_version }}/ubuntu {{ ansible_distribution_release }} main" filename: mariadb update_cache: False @@ -22,7 +22,7 @@ - name: Download repo key when: - mariadb_installation == 'native' - shell: + ansible.builtin.shell: cmd: "curl -sSL 'https://mariadb.org/mariadb_release_signing_key.asc' | gpg --dearmor --output {{ mariadb_keyring }}" creates: "{{ mariadb_keyring }}" tags: @@ -31,7 +31,7 @@ - name: Add apt repository when: - mariadb_installation == 'native' - apt_repository: + ansible.builtin.apt_repository: repo: "deb [arch={{ mariadb_upstream_arch }} signed-by={{ mariadb_keyring }}] {{ mariadb_upstream_mirror }}/{{ mariadb_upstream_version }}/ubuntu {{ ansible_distribution_release }} main" filename: mariadb update_cache: True @@ -41,7 +41,7 @@ - name: Create required dirs loop: "{{ mariadb_default_folders + mariadb_extra_folders }}" - file: + ansible.builtin.file: path: "{{ item }}" owner: root group: root @@ -54,7 +54,7 @@ when: - mariadb_installation == 'native' loop: "{{ mariadb_packages }}" - package: + ansible.builtin.package: name: "{{ item }}" state: present tags: @@ -64,7 +64,7 @@ when: - mariadb_installation == 'native' - mariadb_temp_directory | default(False) - file: + ansible.builtin.file: path: "{{ mariadb_temp_directory }}" owner: root group: root @@ -76,7 +76,7 @@ - name: Fix data permissions when: - not ansible_check_mode - file: + ansible.builtin.file: path: /var/lib/mysql owner: "{{ 'mysql' if mariadb_installation == 'native' else '999' }}" group: "{{ 'mysql' if mariadb_installation == 'native' else '999' }}" @@ -93,7 +93,7 @@ - item.state | default("present") == "present" notify: - Restart mariadb - copy: + ansible.builtin.copy: content: "{{ item.content }}" dest: "/etc/mysql/mariadb.conf.d/{{ item.priority | default('99') }}-{{ item.name }}.cnf" owner: root @@ -110,7 +110,7 @@ - item.state | default("present") == "absent" notify: - Restart mariadb - file: + ansible.builtin.file: path: "/etc/mysql/mariadb.conf.d/{{ item.priority | default('99') }}-{{ item.name }}.cnf" state: absent tags: @@ -122,7 +122,7 @@ - mariadb_galera_enabled notify: - Restart mariadb - template: + ansible.builtin.template: src: galera.j2 dest: /etc/mysql/mariadb.conf.d/60-galera.cnf owner: root @@ -136,7 +136,7 @@ - mariadb_installation == 'native' notify: - Restart mariadb - template: + ansible.builtin.template: src: config.j2 dest: /etc/mysql/mariadb.conf.d/99-override.cnf owner: root @@ -150,7 +150,7 @@ - mariadb_installation == 'native' notify: - Restart mariadb - template: + ansible.builtin.template: src: override.j2 dest: /etc/systemd/system/mariadb.service.d/override.conf owner: root @@ -164,7 +164,7 @@ - mariadb_installation == 'docker' notify: - Restart mariadb - template: + ansible.builtin.template: src: default.j2 dest: /etc/default/mariadb owner: root @@ -178,7 +178,7 @@ - mariadb_installation == 'docker' notify: - Restart mariadb - template: + ansible.builtin.template: src: service.j2 dest: /etc/systemd/system/mariadb.service owner: root @@ -191,7 +191,7 @@ when: - mariadb_installation == 'docker' - mariadb_pull_image - docker_image: + community.docker.docker_image: name: "{{ mariadb_image }}" source: pull tags: @@ -201,14 +201,14 @@ when: - mariadb_installation == 'docker' - mariadb_network | default(False) - docker_network: + community.docker.docker_network: name: '{{ mariadb_network }}' tags: - mariadb - name: Start mariadb service ignore_errors: "{{ ansible_check_mode }}" - systemd: + ansible.builtin.systemd: name: mariadb state: started daemon_reload: True @@ -223,7 +223,7 @@ - not ansible_check_mode diff: False loop: "{{ mariadb_root_hosts }}" - mysql_user: + community.mysql.mysql_user: name: "{{ mariadb_root_username }}" password: "{{ mariadb_root_password }}" host: "{{ item }}" @@ -239,7 +239,7 @@ - name: Write debian config when: - mariadb_installation == 'native' - template: + ansible.builtin.template: src: debian.j2 dest: /etc/mysql/debian.cnf owner: root @@ -251,7 +251,7 @@ - name: Write auth config when: - mariadb_installation == 'native' - template: + ansible.builtin.template: src: auth.j2 dest: /root/.my.cnf owner: root @@ -265,7 +265,7 @@ - mariadb_installation == 'native' - not ansible_check_mode diff: False - mysql_user: + community.mysql.mysql_user: name: "" host_all: True state: absent @@ -277,7 +277,7 @@ when: - mariadb_installation == 'native' - not ansible_check_mode - mysql_db: + community.mysql.mysql_db: name: test state: absent login_unix_socket: /var/run/mysqld/mysqld.sock @@ -288,7 +288,7 @@ when: - mariadb_installation == 'native' - mariadb_galera_enabled | default(False) - include_tasks: galera.yml + ansible.builtin.include_tasks: galera.yml tags: - mariadb @@ -300,7 +300,7 @@ loop: "{{ mariadb_global_databases + mariadb_extra_databases }}" loop_control: label: "{{ item.name }}" - mysql_db: + community.mysql.mysql_db: name: "{{ item.name }}" collation: "{{ item.collation | default(omit) }}" encoding: "{{ item.encoding | default(omit) }}" @@ -318,7 +318,7 @@ loop: "{{ mariadb_global_users + mariadb_extra_users }}" loop_control: label: "{{ item.name }}" - mysql_user: + community.mysql.mysql_user: name: "{{ item.name }}" password: "{{ item.password | default(omit) }}" host: "{{ item.host | default('%') }}" @@ -332,7 +332,7 @@ - name: Write backup script when: mariadb_backup_enabled - template: + ansible.builtin.template: src: backup.j2 dest: /usr/local/bin/mariadb-backup owner: root @@ -343,14 +343,14 @@ - name: Remove backup script when: not mariadb_backup_enabled - file: + ansible.builtin.file: path: /usr/local/bin/mariadb-backup state: absent tags: - mariadb - name: Create backup cronjobs - cron: + ansible.builtin.cron: name: mariadb backup special_time: "{{ mariadb_backup_cron }}" job: /usr/bin/cronic /usr/local/bin/mariadb-backup @@ -360,7 +360,7 @@ - name: Include exporter tasks when: mariadb_exporter_enabled | default(False) - include_tasks: exporter.yml + ansible.builtin.include_tasks: exporter.yml tags: - mariadb - mariadb-exporter