--- - name: Online project management tool hosts: all tasks: - name: Stop running containers become_user: containers become: true ansible.builtin.systemd: scope: user name: container-{{ item }}.service state: stopped loop: - vikunja - db_vikunja failed_when: false - name: Pull container images become_user: containers become: true containers.podman.podman_image: name: docker.io/{{ item }} loop: - vikunja/vikunja:latest - mariadb:latest - name: Create podman volumes containers.podman.podman_volume: state: present name: "{{ item }}" become_user: containers become: true loop: - vikunja-data - vikunja-db - name: Create podman networks containers.podman.podman_network: name: "{{ item }}" recreate: false state: present become_user: containers become: true loop: - traefik-vikunja - mariadb-vikunja - name: Create mariadb instance become_user: containers become: true containers.podman.podman_container: name: db_vikunja image: docker.io/mariadb:latest state: present volume: - vikunja-db:/var/lib/mysql:Z network: - mariadb-vikunja command: - --character-set-server=utf8mb4 - --collation-server=utf8mb4_unicode_ci - --max-connections=1000 env: MARIADB_ROOT_PASSWORD: "{{ vault_vikunja_mariadb_root_password }}" MARIADB_DATABASE: "{{ vault_vikunja_mariadb_database }}" MARIADB_USER: "{{ vault_vikunja_mariadb_user }}" MARIADB_PASSWORD: "{{ vault_vikunja_mariadb_password }}" MARIADB_AUTO_UPGRADE: "true" healthcheck: "mysqladmin ping --silent" healthcheck_interval: 2s generate_systemd: path: /home/containers/.config/systemd/user/ restart_policy: on-failure names: true new: true - name: Create vikunja instance become_user: containers become: true containers.podman.podman_container: name: vikunja image: docker.io/vikunja/vikunja:latest state: present volume: - vikunja-data:/app/vikunja/files:Z network: - traefik-vikunja - mariadb-vikunja env: VIKUNJA_DATABASE_HOST: db_vikunja VIKUNJA_DATABASE_PASSWORD: "{{ vault_vikunja_mariadb_password }}" VIKUNJA_DATABASE_TYPE: mysql VIKUNJA_DATABASE_USER: "{{ vault_vikunja_mariadb_user }}" VIKUNJA_DATABASE_DATABASE: "{{ vault_vikunja_mariadb_database }}" VIKUNJA_SERVICE_JWTSECRET: "{{ vault_vikunja_jwt_secret }}" VIKUNJA_SERVICE_PUBLICURL: https://{{ vault_domain }}/vikunja/ VIKUNJA_FRONTEND_BASE: /vikunja/ label: io.containers.autoupdate: registry traefik.enable: "true" traefik.http.routers.vikunja.entrypoints: https traefik.http.routers.vikunja.rule: Host(`{{ vault_domain }}`) && (PathPrefix(`/vikunja/`) || Path(`/vikunja`)) traefik.http.routers.vikunja.tls: "true" traefik.http.routers.vikunja.tls.certresolver: wildcard traefik.http.routers.vikunja.service: vikunja traefik.http.services.vikunja.loadbalancer.server.port: "3456" traefik.docker.network: traefik-vikunja generate_systemd: path: /home/containers/.config/systemd/user/ restart_policy: on-failure names: true new: true - name: Change start and stop timeout limits become_user: containers become: true community.general.ini_file: path: /home/containers/.config/systemd/user/container-vikunja.service section: Service option: "{{ item }}" value: 3600 mode: "0664" state: "present" no_extra_spaces: true loop: - TimeoutStartSec - TimeoutStopSec - name: Change start and stop timeout limits become_user: containers become: true community.general.ini_file: path: /home/containers/.config/systemd/user/container-db_vikunja.service section: Service option: "{{ item }}" value: 3600 mode: "0664" state: "present" no_extra_spaces: true loop: - TimeoutStartSec - TimeoutStopSec - name: Start containers at boot become_user: containers become: true ansible.builtin.systemd: scope: user name: container-{{ item }}.service enabled: true state: started daemon_reload: true loop: - db_vikunja - vikunja