- name: Create Docker network for MariaDB docker_network: name: central_mariadb state: present when: run_once_docker_mariadb is not defined - name: install MariaDB docker_container: name: central-mariadb image: mariadb:latest #could lead to problems with nextcloud detach: yes env: MARIADB_ROOT_PASSWORD: "{{central_mariadb_root_password}}" MARIADB_AUTO_UPGRADE: "1" networks: - name: central_mariadb volumes: - central_mariadb_database:/var/lib/mysql published_ports: - "127.0.0.1:3306: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={{central_mariadb_root_password}} --execute \"SHOW DATABASES;\"" interval: 3s timeout: 1s retries: 5 when: run_once_docker_mariadb is not defined register: setup_mariadb_container_result - name: install python-mysqlclient pacman: name: python-mysqlclient state: present when: run_once_docker_mariadb is not defined - name: wait for database pause: seconds: "{{pause_duration}}" when: setup_mariadb_container_result.changed and run_once_docker_mariadb is not defined - name: "Create database: {{ database_name }}" mysql_db: name: "{{ database_name }}" state: present login_user: root login_password: "{{ central_mariadb_root_password }}" login_host: 127.0.0.1 login_port: 3306 - name: Grant database privileges ansible.builtin.shell: cmd: "docker exec central-mariadb mariadb -u root -p{{ central_mariadb_root_password }} -e \"GRANT ALL PRIVILEGES ON {{database_name}}.* TO '{{database_username}}'@'%';\"" args: executable: /bin/bash - name: "Create database user: {{ database_username }}" mysql_user: name: "{{database_username}}" password: "{{database_password}}" host: "%" priv: '{{database_name}}.*:ALL' state: present login_user: root login_password: "{{central_mariadb_root_password}}" login_host: 127.0.0.1 login_port: 3306 - name: run the docker_mariadb tasks once set_fact: run_once_docker_mariadb: true when: run_once_docker_mariadb is not defined