--- - name: Build snippet block from variables set_fact: snippet_block: | {{ snippet.host }} { reverse_proxy {{ snippet.upstream }} } - name: Check if snippet already exists set_fact: snippet_present: "{{ snippet_block in caddyfile_content }}" - name: Add snippet if missing ansible.builtin.blockinfile: path: "{{ caddyfile_path }}" marker: "# {mark} Ansible managed Caddy snippet for {{ snippet.host }}" block: "{{ snippet_block }}" create: yes when: not snippet_present notify: "Reload Caddy"