--- - name: Read snippet from template file ansible.builtin.set_fact: caddy_snippet_block: "{{ lookup('template', 'files/Caddyfile.j2') }}" - name: Read current Caddyfile ansible.builtin.slurp: path: "{{ caddy_caddyfile_path }}" register: caddy_caddyfile_raw - name: Decode Caddyfile content ansible.builtin.set_fact: caddy_caddyfile_content: "{{ caddy_caddyfile_raw['content'] | b64decode }}" - name: Check if snippet already exists ansible.builtin.set_fact: caddy_snippet_present: "{{ caddy_snippet_block in caddy_caddyfile_content }}" - name: Add or update snippet in Caddyfile ansible.builtin.blockinfile: path: "{{ caddy_caddyfile_path }}" marker: "# {mark} Ansible managed Caddy snippet for {{ host }}" block: "{{ caddy_snippet_block }}" create: true mode: "0644" notify: Reload Caddy configuration