prole/infrastructure/roles/samba_reverse_dns/tasks/ensure_ptr.yml
2026-01-24 00:54:24 -08:00

37 lines
1.5 KiB
YAML

---
- name: Query existing PTR records
ansible.builtin.command:
cmd: samba-tool dns query {{ samba_dns_server }} {{ lan_reverse_zone }} {{ item.last_octet }} PTR -U {{ samba_dns_admin_user }}%{{ samba_dns_admin_pass }}
register: ptr_query
changed_when: false
failed_when: false
- name: Parse existing PTR records
ansible.builtin.set_fact:
ptr_existing_values: >-
{{
(ptr_query.stdout | default('') |
regex_findall('PTR\\s+([A-Za-z0-9.-]+)\\.?') |
map('regex_replace', '\\.$', '') |
list)
}}
- name: Remove stale PTR records
ansible.builtin.command:
cmd: samba-tool dns delete {{ samba_dns_server }} {{ lan_reverse_zone }} {{ item.last_octet }} PTR {{ ptr_value }} -U {{ samba_dns_admin_user }}%{{ samba_dns_admin_pass }}
loop: "{{ ptr_existing_values | reject('equalto', item.fqdn) | list }}"
loop_control:
loop_var: ptr_value
when: (ptr_existing_values | reject('equalto', item.fqdn) | list | length) > 0
- name: Add expected PTR record
ansible.builtin.command:
cmd: samba-tool dns add {{ samba_dns_server }} {{ lan_reverse_zone }} {{ item.last_octet }} PTR {{ item.fqdn }} -U {{ samba_dns_admin_user }}%{{ samba_dns_admin_pass }}
register: ptr_add
changed_when: ptr_add.rc == 0
failed_when: >
ptr_add.rc != 0 and
('WERR_DNS_ERROR_RECORD_ALREADY_EXISTS' not in (ptr_add.stderr | default(''))) and
('Record already exists' not in (ptr_add.stderr | default('')))
when: item.fqdn not in ptr_existing_values