mirror of
				https://github.com/kevinveenbirkenbach/computer-playbook.git
				synced 2025-10-31 10:19:09 +00:00 
			
		
		
		
	feat(dns): add sys-svc-dns role and extend parent DNS handling
Introduce sys-svc-dns to bootstrap Cloudflare DNS prerequisites. Validates CLOUDFLARE_API_TOKEN, (optionally) manages CAA for base SLDs, and delegates parent record creation to sys-dns-parent-hosts. Wired into sys-stk-front-pure. sys-dns-parent-hosts: new parent_dns filter builds A/AAAA for each parent host and wildcard children (*.parent). Supports dict/list inputs for CURRENT_PLAY_DOMAINS, optional IPv6, proxied flag, and optional *.apex. Exposes a single parent_build_records entry point. Let’s Encrypt role cleanup: remove DNS/C AA management from sys-svc-letsencrypt; it now focuses on webroot challenge config and renew timer. Fixed path joins and run_once guards. Tests: update unit tests to allow wildcard outputs and dict-based CURRENT_PLAY_DOMAINS. Add generate_base_sld_domains filter. Documentation updates for both roles. Conversation: https://chatgpt.com/share/68c342f7-d20c-800f-b61f-cefeebcf1cd8
This commit is contained in:
		| @@ -1,14 +1,12 @@ | ||||
|   - name: Include dependency 'sys-ctl-mtn-cert-renew' | ||||
|     include_role: | ||||
|       name: sys-ctl-mtn-cert-renew | ||||
|     when: run_once_sys_ctl_mtn_cert_renew is not defined | ||||
| - name: Include dependency 'sys-ctl-mtn-cert-renew' | ||||
|   include_role: | ||||
|     name: sys-ctl-mtn-cert-renew | ||||
|   when: run_once_sys_ctl_mtn_cert_renew is not defined | ||||
|  | ||||
|   - name: create nginx letsencrypt config file | ||||
|     template: | ||||
|       src: "letsencrypt.conf.j2" | ||||
|       dest: "{{NGINX.DIRECTORIES.HTTP.GLOBAL}}letsencrypt.conf" | ||||
|     notify: restart openresty | ||||
| - name: create nginx letsencrypt config file | ||||
|   template: | ||||
|     src: "letsencrypt.conf.j2" | ||||
|     dest: "{{ [ NGINX.DIRECTORIES.HTTP.GLOBAL, 'letsencrypt.conf' ] | path_join }}" | ||||
|   notify: restart openresty | ||||
|  | ||||
|   - name: "Set CAA records for all base domains" | ||||
|     include_tasks: 01_set-caa-records.yml | ||||
|     when: DNS_PROVIDER == 'cloudflare' | ||||
| - include_tasks: utils/run_once.yml | ||||
| @@ -1,24 +0,0 @@ | ||||
| --- | ||||
|  | ||||
| - name: "Validate CLOUDFLARE_API_TOKEN" | ||||
|   fail: | ||||
|     msg: > | ||||
|       The variable "CLOUDFLARE_API_TOKEN" must be defined and cannot be empty! | ||||
|   when: (CLOUDFLARE_API_TOKEN | default('') | trim) == '' | ||||
|  | ||||
| - name: "Ensure all CAA records are present" | ||||
|   community.general.cloudflare_dns: | ||||
|     api_token: "{{ CLOUDFLARE_API_TOKEN }}" | ||||
|     zone:     "{{ item.0 }}" | ||||
|     record:   "@" | ||||
|     type:     CAA | ||||
|     flag:     0 | ||||
|     tag:      "{{ item.1.tag }}" | ||||
|     value:    "{{ item.1.value }}" | ||||
|     ttl:      1 | ||||
|     state:    present | ||||
|   loop: "{{ base_sld_domains | product(caa_entries) | list }}" | ||||
|   loop_control: | ||||
|     label: "{{ item.0 }} → {{ item.1.tag }}" | ||||
|   async: "{{ ASYNC_TIME if ASYNC_ENABLED | bool else omit }}" | ||||
|   poll:  "{{ ASYNC_POLL if ASYNC_ENABLED | bool else omit }}" | ||||
| @@ -1,4 +1,3 @@ | ||||
| - block: | ||||
|   - include_tasks: 01_core.yml | ||||
|   - include_tasks: utils/run_once.yml | ||||
|   when: run_once_sys_svc_letsencrypt is not defined | ||||
|   | ||||
		Reference in New Issue
	
	Block a user