mirror of
				https://github.com/kevinveenbirkenbach/computer-playbook.git
				synced 2025-11-04 04:08:15 +00:00 
			
		
		
		
	- Added 'solo' flag support for A/AAAA, CNAME/MX/TXT, and SRV records in sys-dns-cloudflare-records. - Simplified sys-svc-dns: removed NS management tasks and CLOUDFLARE_NAMESERVERS default. - Renamed 03_apex.yml back to 02_apex.yml, adjusted AAAA task name. - Updated web-app-bluesky DNS tasks: marked critical records with 'solo'. - Updated web-app-mailu DNS tasks: removed cleanup block, enforced 'solo' on all records. - Adjusted constructor stage to call domain_mappings with AUTO_BUILD_ALIASES parameter. Conversation: https://chatgpt.com/share/68cd20d8-9ba8-800f-b070-f7294f072c40
		
			
				
	
	
		
			109 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			109 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
---
 | 
						|
# run_once_sys_dns_cloudflare_records: deactivated
 | 
						|
 | 
						|
- name: Assert token
 | 
						|
  ansible.builtin.assert:
 | 
						|
    that: [ "CLOUDFLARE_API_TOKEN | length > 0" ]
 | 
						|
  no_log: "{{ cloudflare_no_log | bool }}"
 | 
						|
  when: MODE_ASSERT | bool
 | 
						|
 | 
						|
- name: Apply A/AAAA
 | 
						|
  community.general.cloudflare_dns:
 | 
						|
    api_token: "{{ CLOUDFLARE_API_TOKEN }}"
 | 
						|
    zone: "{{ item.zone }}"
 | 
						|
    type: "{{ item.type }}"
 | 
						|
    name: "{{ item.name }}"
 | 
						|
    content: "{{ item.content }}"
 | 
						|
    proxied: "{{ item.proxied | default(false) }}"
 | 
						|
    ttl: "{{ item.ttl | default(1) }}"
 | 
						|
    state: "{{ item.state | default('present') }}"
 | 
						|
    solo: "{{ item.solo | default(false) }}"
 | 
						|
  loop: "{{ cloudflare_records | selectattr('type','in',['A','AAAA']) | list }}"
 | 
						|
  loop_control: { label: "{{ item.type }} {{ item.name }} -> {{ item.content }}" }
 | 
						|
  async: "{{ cloudflare_async_enabled | ternary(cloudflare_async_time, omit) }}"
 | 
						|
  poll: "{{ cloudflare_async_enabled | ternary(cloudflare_async_poll, omit) }}"
 | 
						|
  no_log: "{{ cloudflare_no_log | bool }}"
 | 
						|
  register: _cf_call
 | 
						|
  failed_when: >
 | 
						|
    _cf_call is failed and
 | 
						|
    (
 | 
						|
      ('An identical record already exists' not in (_cf_call.msg | default('') | string))
 | 
						|
      and
 | 
						|
      ('81058' not in (_cf_call.msg | default('') | string))
 | 
						|
    )
 | 
						|
  changed_when: >
 | 
						|
    (_cf_call.changed | default(false)) and
 | 
						|
    (
 | 
						|
      ('An identical record already exists' not in (_cf_call.msg | default('') | string))
 | 
						|
      and
 | 
						|
      ('81058' not in (_cf_call.msg | default('') | string))
 | 
						|
    )
 | 
						|
 | 
						|
- name: Apply CNAME/MX/TXT
 | 
						|
  community.general.cloudflare_dns:
 | 
						|
    api_token: "{{ CLOUDFLARE_API_TOKEN }}"
 | 
						|
    zone: "{{ item.zone }}"
 | 
						|
    type: "{{ item.type }}"
 | 
						|
    name: "{{ item.name }}"
 | 
						|
    value: "{{ item.value }}"
 | 
						|
    ttl: "{{ item.ttl | default(1) }}"
 | 
						|
    priority: "{{ (item.type == 'MX') | ternary(item.priority | default(10), omit) }}"
 | 
						|
    state: "{{ item.state | default('present') }}"
 | 
						|
    solo: "{{ item.solo | default(false) }}"
 | 
						|
  loop: "{{ cloudflare_records | selectattr('type','in',['CNAME','MX','TXT']) | list }}"
 | 
						|
  loop_control: { label: "{{ item.type }} {{ item.name }} -> {{ item.value }}" }
 | 
						|
  async: "{{ cloudflare_async_enabled | ternary(cloudflare_async_time, omit) }}"
 | 
						|
  poll: "{{ cloudflare_async_enabled | ternary(cloudflare_async_poll, omit) }}"
 | 
						|
  no_log: "{{ cloudflare_no_log | bool }}"
 | 
						|
  register: _cf_call
 | 
						|
  failed_when: >
 | 
						|
    _cf_call is failed and
 | 
						|
    (
 | 
						|
      ('An identical record already exists' not in (_cf_call.msg | default('') | string))
 | 
						|
      and
 | 
						|
      ('81058' not in (_cf_call.msg | default('') | string))
 | 
						|
    )
 | 
						|
  changed_when: >
 | 
						|
    (_cf_call.changed | default(false)) and
 | 
						|
    (
 | 
						|
      ('An identical record already exists' not in (_cf_call.msg | default('') | string))
 | 
						|
      and
 | 
						|
      ('81058' not in (_cf_call.msg | default('') | string))
 | 
						|
    )
 | 
						|
 | 
						|
- name: Apply SRV
 | 
						|
  community.general.cloudflare_dns:
 | 
						|
    api_token: "{{ CLOUDFLARE_API_TOKEN }}"
 | 
						|
    zone: "{{ item.zone }}"
 | 
						|
    type: SRV
 | 
						|
    service: "{{ item.service }}"
 | 
						|
    proto: "{{ item.proto }}"
 | 
						|
    name: "{{ item.name }}"
 | 
						|
    priority: "{{ item.priority }}"
 | 
						|
    weight: "{{ item.weight }}"
 | 
						|
    port: "{{ item.port }}"
 | 
						|
    value: "{{ item.value }}"
 | 
						|
    ttl: "{{ item.ttl | default(1) }}"
 | 
						|
    state: "{{ item.state | default('present') }}"
 | 
						|
    solo: "{{ item.solo | default(false) }}"
 | 
						|
  loop: "{{ cloudflare_records | selectattr('type','equalto','SRV') | list }}"
 | 
						|
  loop_control: { label: "SRV {{ item.service }}.{{ item.proto }} {{ item.name }} -> {{ item.value }}:{{ item.port }}" }
 | 
						|
  ignore_errors: "{{ item.ignore_errors | default(true) }}"
 | 
						|
  async: "{{ cloudflare_async_enabled | ternary(cloudflare_async_time, omit) }}"
 | 
						|
  poll: "{{ cloudflare_async_enabled | ternary(cloudflare_async_poll, omit) }}"
 | 
						|
  no_log: "{{ cloudflare_no_log | bool }}"
 | 
						|
  register: _cf_call
 | 
						|
  failed_when: >
 | 
						|
    _cf_call is failed and
 | 
						|
    (
 | 
						|
      ('An identical record already exists' not in (_cf_call.msg | default('') | string))
 | 
						|
      and
 | 
						|
      ('81058' not in (_cf_call.msg | default('') | string))
 | 
						|
    )
 | 
						|
  changed_when: >
 | 
						|
    (_cf_call.changed | default(false)) and
 | 
						|
    (
 | 
						|
      ('An identical record already exists' not in (_cf_call.msg | default('') | string))
 | 
						|
      and
 | 
						|
      ('81058' not in (_cf_call.msg | default('') | string))
 | 
						|
    ) |