--- - name: Install podman apt: name: - podman - podman-compose # for ad-hoc use; production uses quadlets - slirp4netns # rootless networking / port publishing - uidmap # rootless subuid/subgid mapping state: present update_cache: true # All app data lives in named Podman volumes (created implicitly on first # `podman run`/Quadlet start), not host bind mounts — avoids rootless UID # mapping headaches. Nothing to pre-create here. - name: Configure Gitea as additional registry template: src: registries.conf.j2 dest: /etc/containers/registries.conf.d/gitea.conf mode: "0644" notify: Restart podman services - name: Login to Gitea container registry become_user: "{{ deploy_user }}" environment: XDG_RUNTIME_DIR: "/run/user/{{ deploy_uid }}" command: > podman login {{ registry_host }} -u {{ registry_user }} -p {{ registry_token }} register: login_result changed_when: "'Login Succeeded' in login_result.stdout" # Run this after Gitea is up and registry_token is set - name: Enable linger for {{ deploy_user }} (user services survive logout/reboot) command: "loginctl enable-linger {{ deploy_user }}" changed_when: false - name: Enable podman-auto-update timer (user scope) become_user: "{{ deploy_user }}" environment: XDG_RUNTIME_DIR: "/run/user/{{ deploy_uid }}" systemd: name: podman-auto-update.timer enabled: true state: started scope: user daemon_reload: true - name: Override auto-update timer schedule (user scope) become_user: "{{ deploy_user }}" file: path: "/home/{{ deploy_user }}/.config/systemd/user/podman-auto-update.timer.d" state: directory mode: "0755" - name: Deploy auto-update timer schedule override become_user: "{{ deploy_user }}" copy: dest: "/home/{{ deploy_user }}/.config/systemd/user/podman-auto-update.timer.d/override.conf" content: | [Timer] OnCalendar= OnCalendar={{ autoupdate_schedule }} AccuracySec=1s mode: "0644" notify: Reload user systemd