Refactor MariaDB and PostgreSQL roles for Ansible 2.20 compatibility and Infinito.Nexus conventions

- Replace legacy docker_container-based MariaDB deployment with docker-compose based workflow
- Add custom Dockerfile and docker-compose templates for MariaDB
- Split MariaDB command into separate arguments to avoid entrypoint parsing errors
- Introduce MARIADB_CUSTOM_IMAGE and MARIADB_EXPOSE_LOCAL variables
- Add docker_compose_flush_handlers to ensure correct handler execution on first run
- Replace utils/once/finalize.yml with utils/once/flag.yml for new run-once semantics
- Align variable naming with Infinito.Nexus UPPERCASE conventions
- Fix PostgreSQL custom image variable name (POSTGRES_CUSTOM_IMAGE_NAME → POSTGRES_CUSTOM_IMAGE)
- Remove obsolete flush_handlers var injection in svc-db-postgres/tasks/main.yml
- General cleanup after migration from Ansible 2.18 → 2.20

Conversation reference:
https://chatgpt.com/share/69306c81-9934-800f-b317-f53a8f246a73
This commit is contained in:
2025-12-03 18:00:30 +01:00
parent 13d47766b7
commit 379b1d420e
9 changed files with 51 additions and 44 deletions

View File

@@ -1,31 +1,9 @@
- name: "Setup docker network for {{ application_id }}"
include_tasks: "{{ [playbook_dir, 'roles/docker-compose/tasks/utils/network.yml' ] | path_join }}"
vars:
docker_network_name: "{{ MARIADB_NETWORK }}"
docker_network_subnet: "{{ MARIADB_SUBNET }}"
- name: install MariaDB
community.docker.docker_container:
name: "{{ MARIADB_NAME }}"
image: "{{ MARIADB_IMAGE }}:{{ MARIADB_VERSION}}"
detach: yes
env:
MARIADB_ROOT_PASSWORD: "{{ MARIADB_ROOT_PWD }}"
MARIADB_AUTO_UPGRADE: "1"
networks:
- name: "{{ MARIADB_NETWORK }}"
volumes:
- "{{ MARIADB_VOLUME }}:/var/lib/mysql"
published_ports:
- "127.0.0.1:{{ MARIADB_PORT }}:3306" # can be that this will be removed if all applications use sockets
command: "--transaction-isolation=READ-COMMITTED --binlog-format=ROW" #for nextcloud
restart_policy: "{{ DOCKER_RESTART_POLICY }}"
healthcheck:
test: "/usr/bin/mariadb --user=root --password={{ MARIADB_ROOT_PWD }} --execute \"SHOW DATABASES;\""
interval: 10s
timeout: 5s
retries: 18
register: setup_mariadb_container_result
docker_network_name: "{{ MARIADB_NETWORK }}"
docker_network_subnet: "{{ MARIADB_SUBNET }}"
docker_compose_flush_handlers: true
- name: install python-mysqlclient
community.general.pacman:
@@ -41,8 +19,5 @@
- db_info.container.State.Health.Status == "healthy"
retries: 30
delay: 5
when:
- setup_mariadb_container_result is defined
- setup_mariadb_container_result.changed
- include_tasks: utils/once/finalize.yml
- include_tasks: utils/once/flag.yml