Refactor web-opt-rdr-www:

- Split Cloudflare edge redirect into _01 and _02 task files
- Wrap Cloudflare routines in a conditional block on DNS_PROVIDER
- Preserve origin vs edge flavor handling
Conversation: https://chatgpt.com/share/68c3609b-5624-800f-b5fa-69def6032dca
This commit is contained in:
2025-09-12 01:52:13 +02:00
parent 206b3eadbc
commit a0c2245bbd
3 changed files with 32 additions and 31 deletions

View File

@@ -0,0 +1,7 @@
- name: Include Cloudflare redirect rule to enforce www → apex
include_tasks: _02_cloudflare_redirect_rule.yml
vars:
domain: "{{ item | regex_replace('^www\\.', '') }}"
www_fqdn: "{{ item }}"
apex_url: "{{ WEB_PROTOCOL }}://{{ item | regex_replace('^www\\.', '') }}"
loop: "{{ REDIRECT_WWW_DOMAINS }}"

View File

@@ -13,35 +13,29 @@
redirect_domain_mappings: "{{ REDIRECT_WWW_DOMAINS | map('regex_replace', '^www\\.(.+)$', '{ source: \"www.\\1\", target: \"\\1\" }') | map('from_yaml') | list }}" redirect_domain_mappings: "{{ REDIRECT_WWW_DOMAINS | map('regex_replace', '^www\\.(.+)$', '{ source: \"www.\\1\", target: \"\\1\" }') | map('from_yaml') | list }}"
when: REDIRECT_WWW_FLAVOR == 'origin' when: REDIRECT_WWW_FLAVOR == 'origin'
- name: Include DNS role to set redirects - name: Cloudflare WWW Routines
include_role: when: DNS_PROVIDER == 'cloudflare'
name: sys-dns-cloudflare-records block:
vars: - name: Include DNS role to set redirects
cloudflare_records: | include_role:
{%- set bare = REDIRECT_WWW_DOMAINS | map('regex_replace', '^www\\.(.+)$', '\\1') | list -%} name: sys-dns-cloudflare-records
[ vars:
{%- for d in bare -%} cloudflare_records: |
{ {%- set bare = REDIRECT_WWW_DOMAINS | map('regex_replace', '^www\\.(.+)$', '\\1') | list -%}
"type": "A", [
"zone": "{{ d | to_zone }}", {%- for d in bare -%}
"name": "{{ d }}", {
"content": "{{ networks.internet.ip4 }}", "type": "A",
"proxied": {{ REDIRECT_WWW_FLAVOR == 'edge' }}, "zone": "{{ d | to_zone }}",
"ttl": 1 "name": "{{ d }}",
}{{ "," if not loop.last else "" }} "content": "{{ networks.internet.ip4 }}",
{%- endfor -%} "proxied": {{ REDIRECT_WWW_FLAVOR == 'edge' }},
] "ttl": 1
when: }{{ "," if not loop.last else "" }}
- DNS_PROVIDER == 'cloudflare' {%- endfor -%}
- REDIRECT_WWW_FLAVOR == 'origin' ]
when: REDIRECT_WWW_FLAVOR == 'origin'
- name: Include Cloudflare redirect rule to enforce www → apex - name: Include Cloudflare edge redirect
include_tasks: cloudflare_redirect_rule.yml include_tasks: _01_cloudflare_edge_redirect.yml
vars: when: REDIRECT_WWW_FLAVOR == 'edge'
domain: "{{ item | regex_replace('^www\\.', '') }}"
www_fqdn: "{{ item }}"
apex_url: "{{ WEB_PROTOCOL }}://{{ item | regex_replace('^www\\.', '') }}"
loop: "{{ REDIRECT_WWW_DOMAINS }}"
when: REDIRECT_WWW_FLAVOR == 'edge'