--- - name: Add caddy vhost config blockinfile: path: /etc/caddy/Caddyfile marker: "# {mark} ANSIBLE MANAGED BLOCK {{ vhost_id }}" block: | {{ vhost_domains | join(' ') }} { {% for location in vhost_locations_all %} handle {{ location.path }} { {% for header in location.headers | dict2items %} header {{ header.key }} `{{ header.value }}` {% endfor %} {% if location.basicauth %} basicauth { {% for user in location.basicauth_users | dict2items %} {{ user.key }} {{ user.value }} {% endfor %} } {% endif %} {% if location.type == 'reverse_proxy' %} reverse_proxy {{ location.proxy_target_protocol }}://{{ location.proxy_target_host }}:{{ location.proxy_target_port }} { {% if location.proxy_target_protocol == 'https' and location.proxy_target_host == 'localhost' %} transport http { tls_insecure_skip_verify } {% endif %} } {% elif location.type == 'redirect' %} redir {{ location.redirect_target }}{{ '{uri}' if location.redirect_preserve_path }} {{ location.redirect_type }} {% elif location.type == 'respond' %} {% if location.respond_content_type == 'json' %} respond `{{ location.respond_content | to_json }}` {% else %} respond `{{ location.respond_content }}` {% endif %} {% endif %} } {% endfor %} } validate: 'caddy validate --config %s --adapter caddyfile' backup: true notify: reload caddy