--- - name: 'Ensure needed software is installed' become: true ansible.builtin.apt: name: 'podman' state: 'present' - name: 'Prepare nextcloud network' become: true containers.podman.podman_network: name: '{{ nextcloud_podman_network }}' state: 'quadlet' notify: - 'Reload nextcloud services' - 'Restart nextcloud network' - name: 'Create nextcloud volumes' become: true containers.podman.podman_volume: name: '{{ item }}' state: 'quadlet' loop: - '{{ nextcloud_app_volume }}' - '{{ nextcloud_db_volume }}' - '{{ nextcloud_redis_volume }}' notify: - 'Reload nextcloud services' - 'Restart nextcloud volumes' - name: 'Define nextcloud-db image' become: true containers.podman.podman_image: name: '{{ nextcloud_db_image_name }}:{{ nextcloud_db_image_tag }}' quadlet_filename: 'nextcloud-db' state: 'quadlet' notify: - 'Reload nextcloud services' - 'Restart nextcloud-db image' - name: 'Define nextcloud-redis image' become: true containers.podman.podman_image: name: '{{ nextcloud_redis_image_name }}:{{ nextcloud_redis_image_tag }}' quadlet_filename: 'nextcloud-redis' state: 'quadlet' notify: - 'Reload nextcloud services' - 'Restart nextcloud-redis image' - name: 'Define nextcloud-app image' become: true containers.podman.podman_image: name: '{{ nextcloud_app_image_name }}:{{ nextcloud_app_image_tag }}' quadlet_filename: 'nextcloud-app' state: 'quadlet' notify: - 'Reload nextcloud services' - 'Restart nextcloud-app image' - name: 'Prepare nextcloud config files location' become: true ansible.builtin.file: path: '/etc/nextcloud' state: 'directory' owner: 'root' group: 'root' mode: 'u=rwx,g=rx,o=rx' - name: 'Create config files for nextcloud' become: true ansible.builtin.template: src: '{{ item.src }}' dest: '{{ item.dest }}' owner: 33 group: 33 mode: '{{ item.mode }}' notify: - 'Restart nextcloud-app container' # - 'Restart nextcloud-cron container' loop: - src: 'oidc.config.php.j2' dest: '/etc/nextcloud/oidc.config.php' mode: 'u=rw,g=r,o=r' - src: 'ansible.config.php.j2' dest: '/etc/nextcloud/ansible.config.php' mode: 'u=rw,g=r,o=r' - src: 'copy_config.sh.j2' dest: '/etc/nextcloud/copy_config.sh' mode: 'u=rwx,g=rx,o=rx' - name: 'Create nextcloud-db container' become: true containers.podman.podman_container: name: '{{ nextcloud_db_container_name }}' image: 'nextcloud-db.image' network: '{{ nextcloud_podman_network }}.network' state: 'quadlet' volume: - '{{ nextcloud_db_volume }}.volume:/var/lib/postgresql/data/' env: POSTGRES_DB: '{{ nextcloud_db_database }}' POSTGRES_USER: '{{ nextcloud_db_user }}' POSTGRES_PASSWORD: '{{ nextcloud_db_password }}' quadlet_options: | [Install] WantedBy=default.target [Unit] Requires={{ nextcloud_podman_network }}-network.service Requires={{ nextcloud_db_volume }}-volume.service After={{ nextcloud_podman_network }}-network.service After={{ nextcloud_db_volume }}-volume.service notify: - 'Reload nextcloud services' - 'Restart nextcloud-db container' - name: 'Create nextcloud-redis container' become: true containers.podman.podman_container: name: '{{ nextcloud_redis_container_name }}' image: 'nextcloud-redis.image' network: '{{ nextcloud_podman_network }}.network' state: 'quadlet' volume: - '{{ nextcloud_redis_volume }}.volume:/data' quadlet_options: | [Install] WantedBy=default.target [Unit] Requires={{ nextcloud_podman_network }}-network.service Requires={{ nextcloud_redis_volume }}-volume.service After={{ nextcloud_podman_network }}-network.service After={{ nextcloud_redis_volume }}-volume.service notify: - 'Reload nextcloud services' - 'Restart nextcloud-redis container' # - name: 'Create nextcloud-cron container' # become: true # containers.podman.podman_container: # name: '{{ nextcloud_cron_container_name }}' # image: 'nextcloud-app.image' # network: '{{ nextcloud_podman_network }}.network' # state: 'quadlet' # entrypoint: '/cron.sh' # volume: # - '{{ nextcloud_app_volume }}.volume:/var/www/html' # - '/etc/nextcloud/oidc.config.php:/docker-entrypoint-hooks.d/before-starting/oidc.config.php' # - '/etc/nextcloud/copy_config.sh:/docker-entrypoint-hooks.d/before-starting/copy_config.sh' # quadlet_options: | # [Install] # WantedBy=default.target # [Unit] # Requires={{ nextcloud_podman_network }}-network.service # Requires={{ nextcloud_app_volume }}-volume.service # Requires=nextcloud-db.service # Requires=nextcloud-redis.service # After={{ nextcloud_podman_network }}-network.service # After={{ nextcloud_app_volume }}-volume.service # After=nextcloud-db.service # After=nextcloud-redis.service # notify: # - 'Reload nextcloud services' # - 'Restart nextcloud-cron container' - name: 'Create nextcloud-app container' become: true containers.podman.podman_container: name: '{{ nextcloud_app_container_name }}' image: 'nextcloud-app.image' network: '{{ nextcloud_podman_network }}.network' state: 'quadlet' volume: - '{{ nextcloud_app_volume }}.volume:/var/www/html' - '/etc/nextcloud/oidc.config.php:/docker-entrypoint-hooks.d/before-starting/oidc.config.php' - '/etc/nextcloud/ansible.config.php:/docker-entrypoint-hooks.d/before-starting/ansible.config.php' - '/etc/nextcloud/copy_config.sh:/docker-entrypoint-hooks.d/before-starting/copy_config.sh' env: '{{ nextcloud_app_environments }}' quadlet_options: | [Install] WantedBy=default.target [Unit] Requires={{ nextcloud_podman_network }}-network.service Requires={{ nextcloud_app_volume }}-volume.service Requires=nextcloud-db.service Requires=nextcloud-redis.service After={{ nextcloud_podman_network }}-network.service After={{ nextcloud_app_volume }}-volume.service After=nextcloud-db.service After=nextcloud-redis.service notify: - 'Reload nextcloud services' - 'Restart nextcloud-app container' - name: 'Flush handlers' ansible.builtin.meta: flush_handlers - name: 'Configure apps' become: true enbewe.nextcloud.nextcloud_app: state: '{{ item.key }}' name: '{{ item.value }}' force: true container_name: '{{ nextcloud_app_container_name }}' retries: 30 delay: 10 notify: # - 'Restart nextcloud-cron container' - 'Restart nextcloud-app container' loop: '{{ nextcloud_apps | dict2items }}'