mirror of
https://github.com/dredx/prole.git
synced 2026-09-24 15:54:32 +00:00
44 lines
1.7 KiB
YAML
44 lines
1.7 KiB
YAML
---
|
|
- name: Derive record name within zone from fqdn
|
|
ansible.builtin.set_fact:
|
|
samba_dns_record_name: >-
|
|
{{
|
|
(item.fqdn | regex_replace('\\.?$','')) |
|
|
regex_replace('\\.' ~ (prole_domain | regex_escape) ~ '$', '')
|
|
}}
|
|
|
|
- name: Query existing A records
|
|
ansible.builtin.command:
|
|
cmd: samba-tool dns query {{ samba_dns_server }} {{ prole_domain }} {{ samba_dns_record_name }} A -U {{ samba_dns_admin_user }}%{{ samba_dns_admin_pass }}
|
|
register: a_query
|
|
changed_when: false
|
|
failed_when: false
|
|
|
|
- name: Parse existing A record values
|
|
ansible.builtin.set_fact:
|
|
a_existing_values: >-
|
|
{{
|
|
(a_query.stdout | default('') |
|
|
regex_findall('\\bA\\s+([0-9]{1,3}(?:\\.[0-9]{1,3}){3})\\b') |
|
|
list)
|
|
}}
|
|
|
|
- name: Remove stale A records
|
|
ansible.builtin.command:
|
|
cmd: samba-tool dns delete {{ samba_dns_server }} {{ prole_domain }} {{ samba_dns_record_name }} A {{ a_value }} -U {{ samba_dns_admin_user }}%{{ samba_dns_admin_pass }}
|
|
loop: "{{ a_existing_values | reject('equalto', item.ipv4) | list }}"
|
|
loop_control:
|
|
loop_var: a_value
|
|
when: (a_existing_values | reject('equalto', item.ipv4) | list | length) > 0
|
|
|
|
- name: Add expected A record
|
|
ansible.builtin.command:
|
|
cmd: samba-tool dns add {{ samba_dns_server }} {{ prole_domain }} {{ samba_dns_record_name }} A {{ item.ipv4 }} -U {{ samba_dns_admin_user }}%{{ samba_dns_admin_pass }}
|
|
register: a_add
|
|
changed_when: a_add.rc == 0
|
|
failed_when: >
|
|
a_add.rc != 0 and
|
|
('WERR_DNS_ERROR_RECORD_ALREADY_EXISTS' not in (a_add.stderr | default(''))) and
|
|
('Record already exists' not in (a_add.stderr | default('')))
|
|
when: item.ipv4 not in a_existing_values
|