- hosts: localhost tasks: - name: Rebuild images containers.podman.podman_image: name: "{{ item.name }}:{{ ansible_date_time.date }}-{{ ansible_date_time.hour }}{{ ansible_date_time.minute }}{{ ansible_date_time.second }}" path: "{{ item.path }}" build: file: "{{ item.file }}" cache: false tags: rebuild loop: "{{ containers }}" - name: Tag new images to latest containers.podman.podman_tag: image: "{{ item.name }}:{{ ansible_date_time.date }}-{{ ansible_date_time.hour }}{{ ansible_date_time.minute }}{{ ansible_date_time.second }}" target_names: "{{ item.name }}:latest" tags: rebuild loop: "{{ containers }}" - name: Stop systemd pod service ansible.builtin.systemd: name: "pod-{{ pod.name }}.service" state: stopped scope: user ignore_errors: true tags: - remove - service-stop when: pod is defined - name: Remove systemd pod service file ansible.builtin.file: path: "~/.config/systemd/user/pod-{{ pod.name }}.service" state: absent tags: remove when: pod is defined - name: Stop systemd container service ansible.builtin.systemd: name: "container-{{ item.name }}.service" state: stopped scope: user ignore_errors: true tags: - remove - service-stop loop: "{{ containers }}" - name: Remove systemd container service file ansible.builtin.file: path: "~/.config/systemd/user/container-{{ item.name }}.service" state: absent tags: remove loop: "{{ containers }}" - name: Remove pod containers.podman.podman_pod: name: "{{ pod.name }}" state: absent tags: - remove - container-stop when: pod is defined - name: Remove containers containers.podman.podman_container: name: "{{ item.name }}" state: absent tags: - remove - container-stop loop: "{{ containers }}" - name: Create pod containers.podman.podman_pod: name: "{{ pod.name }}" ports: "{{ pod.ports }}" state: started tags: container-start when: pod is defined - name: Start containers ansible.builtin.shell: "podman container runlabel {{ item.runlabel }} {{ item.name}}:latest" tags: container-start loop: "{{ containers }}" - name: Generate systemd service file for pod containers.podman.podman_generate_systemd: name: "{{ pod.name }}" dest: "~/.config/systemd/user/" new: true tags: generate-systemd when: pod is defined - name: Generate systemd service file for container (when pod is not in use) containers.podman.podman_generate_systemd: name: "{{ item.name }}" dest: "~/.config/systemd/user/" new: true tags: generate-systemd loop: "{{ containers }}" when: pod is not defined - name: Reload systemd daemon ansible.builtin.systemd: daemon_reload: true scope: user tags: - remove - generate-systemd - name: Pause for container full startup ansible.builtin.pause: seconds: 30 - name: Remove pod containers.podman.podman_pod: name: "{{ pod.name }}" state: absent when: pod is defined - name: Remove containers containers.podman.podman_container: name: "{{ item.name }}" state: absent loop: "{{ containers }}" - name: Start systemd pod service ansible.builtin.systemd: name: "pod-{{ pod.name}}.service" state: started enabled: true scope: user tags: service-start when: pod is defined - name: Start systemd container service ansible.builtin.systemd: name: "container-{{ item.name }}.service" state: started enabled: true scope: user tags: service-start loop: "{{ containers }}" - name: Prune old images ansible.builtin.shell: podman image prune -f