--- - name: Install podman ansible.builtin.package: name: podman state: present - name: Create container group ansible.builtin.group: name: "{{ container_group }}" gid: "{{ container_gid }}" - name: Create container user ansible.builtin.user: name: "{{ container_user }}" uid: "{{ container_uid }}" group: "{{ container_group }}" - name: Generate list of persistent container directories ansible.builtin.set_fact: persistent_container_dirs: "{{ containers | map(attribute='volumes') | flatten | map('regex_replace', ':.*' ) | list }}" - name: Create persistent container directories ansible.builtin.file: path: "{{ item }}" state: directory owner: "{{ container_user | default('root') }}" group: "{{ container_group | default('root') }}" mode: '0770' with_items: - "{{ persistent_container_dirs }}" loop_control: label: "{{ item }}" - name: Create quadlet .container files containers.podman.podman_container: name: "{{ item.name }}" state: quadlet image: "{{ item.image }}" generate_systemd: names: True after: "{{ item.after | default(omit) }}" restart_sec: "{{ item.restart_sec | default(omit) }}" requires: "{{ item.requires | default(omit) }}" restart_policy: "{{ item.restart_policy | default(omit) }}" privileged: "{{ item.privileged | default(omit) }}" network: "{{ item.networks | default(omit) }}" env: "{{ item.environment | default(omit) }}" cap_add: "{{ item.cap_add | default(omit) }}" volumes: "{{ item.volumes | default(omit) }}" device: "{{ item.devices | default(omit) }}" ports: "{{ item.ports | default(omit) }}" quadlet_options: - "AutoUpdate=registry" - "Pull=newer" - | [Install] WantedBy=default.target {{ item.quadlet_options | default('') }} with_items: - "{{ containers }}" when: - containers is defined loop_control: label: "{{ item.name }}" notify: - Daemon Reload - name: Flush handlers meta: flush_handlers