mirror of
https://github.com/dredx/prole.git
synced 2026-09-23 11:03:59 +00:00
fix(samba_dns): use admin credentials instead of machine Kerberos (-P)
All samba-tool dns commands were using -P (machine account Kerberos) which
silently failed with no error — tasks reported changed=0 but records were
never written. Switch to -U Administrator --password={{ samba_dns_admin_pass }}
which uses the vault-protected admin credentials that were already defined
but never wired up.
Also fix regex patterns in record parsers: samba-tool output uses `A: IP`
and `PTR: fqdn` format, not `A IP` / `PTR fqdn` (space-separated), so
updated regex_findall patterns to match `TYPE:\s+value`.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
e014fd5b71
commit
a2a82bc495
@ -12,7 +12,8 @@
|
|||||||
|
|
||||||
- name: Query existing A records
|
- name: Query existing A records
|
||||||
ansible.builtin.command:
|
ansible.builtin.command:
|
||||||
cmd: samba-tool dns query {{ samba_dns_server }} {{ samba_target_zone }} {{ samba_dns_record_name }} A -P
|
cmd: samba-tool dns query {{ samba_dns_server }} {{ samba_target_zone }} {{ samba_dns_record_name }} A
|
||||||
|
-U Administrator --password={{ samba_dns_admin_pass }}
|
||||||
register: a_query
|
register: a_query
|
||||||
changed_when: false
|
changed_when: false
|
||||||
failed_when: false
|
failed_when: false
|
||||||
@ -22,13 +23,14 @@
|
|||||||
a_existing_values: >-
|
a_existing_values: >-
|
||||||
{{
|
{{
|
||||||
(a_query.stdout | default('') |
|
(a_query.stdout | default('') |
|
||||||
regex_findall('\\bA\\s+([0-9]{1,3}(?:\\.[0-9]{1,3}){3})\\b') |
|
regex_findall('\\bA:\\s+([0-9]{1,3}(?:\\.[0-9]{1,3}){3})\\b') |
|
||||||
list)
|
list)
|
||||||
}}
|
}}
|
||||||
|
|
||||||
- name: Remove stale A records
|
- name: Remove stale A records
|
||||||
ansible.builtin.command:
|
ansible.builtin.command:
|
||||||
cmd: samba-tool dns delete {{ samba_dns_server }} {{ samba_target_zone }} {{ samba_dns_record_name }} A {{ a_value }} -P
|
cmd: samba-tool dns delete {{ samba_dns_server }} {{ samba_target_zone }} {{ samba_dns_record_name }} A {{ a_value }}
|
||||||
|
-U Administrator --password={{ samba_dns_admin_pass }}
|
||||||
loop: "{{ a_existing_values | difference(item.ipv4s) }}"
|
loop: "{{ a_existing_values | difference(item.ipv4s) }}"
|
||||||
loop_control:
|
loop_control:
|
||||||
loop_var: a_value
|
loop_var: a_value
|
||||||
@ -36,7 +38,8 @@
|
|||||||
|
|
||||||
- name: Add missing A records
|
- name: Add missing A records
|
||||||
ansible.builtin.command:
|
ansible.builtin.command:
|
||||||
cmd: samba-tool dns add {{ samba_dns_server }} {{ samba_target_zone }} {{ samba_dns_record_name }} A {{ a_target_ip }} -P
|
cmd: samba-tool dns add {{ samba_dns_server }} {{ samba_target_zone }} {{ samba_dns_record_name }} A {{ a_target_ip }}
|
||||||
|
-U Administrator --password={{ samba_dns_admin_pass }}
|
||||||
register: a_add
|
register: a_add
|
||||||
changed_when: a_add.rc == 0
|
changed_when: a_add.rc == 0
|
||||||
failed_when: >
|
failed_when: >
|
||||||
|
|||||||
@ -12,7 +12,8 @@
|
|||||||
|
|
||||||
- name: Query existing CNAME records
|
- name: Query existing CNAME records
|
||||||
ansible.builtin.command:
|
ansible.builtin.command:
|
||||||
cmd: samba-tool dns query {{ samba_dns_server }} {{ samba_target_zone }} {{ samba_dns_record_name }} CNAME -P
|
cmd: samba-tool dns query {{ samba_dns_server }} {{ samba_target_zone }} {{ samba_dns_record_name }} CNAME
|
||||||
|
-U Administrator --password={{ samba_dns_admin_pass }}
|
||||||
register: cname_query
|
register: cname_query
|
||||||
changed_when: false
|
changed_when: false
|
||||||
failed_when: false
|
failed_when: false
|
||||||
@ -22,20 +23,22 @@
|
|||||||
cname_existing_value: >-
|
cname_existing_value: >-
|
||||||
{{
|
{{
|
||||||
(cname_query.stdout | default('') |
|
(cname_query.stdout | default('') |
|
||||||
regex_findall('\\bCNAME\\s+([a-zA-Z0-9.-]+)\\b') |
|
regex_findall('\\bCNAME:\\s+([a-zA-Z0-9.-]+)\\b') |
|
||||||
first | default(''))
|
first | default(''))
|
||||||
}}
|
}}
|
||||||
|
|
||||||
- name: Remove stale CNAME record
|
- name: Remove stale CNAME record
|
||||||
ansible.builtin.command:
|
ansible.builtin.command:
|
||||||
cmd: samba-tool dns delete {{ samba_dns_server }} {{ samba_target_zone }} {{ samba_dns_record_name }} CNAME {{ cname_existing_value }} -P
|
cmd: samba-tool dns delete {{ samba_dns_server }} {{ samba_target_zone }} {{ samba_dns_record_name }} CNAME {{ cname_existing_value }}
|
||||||
|
-U Administrator --password={{ samba_dns_admin_pass }}
|
||||||
when:
|
when:
|
||||||
- cname_existing_value | length > 0
|
- cname_existing_value | length > 0
|
||||||
- cname_existing_value != item.target
|
- cname_existing_value != item.target
|
||||||
|
|
||||||
- name: Add missing CNAME record
|
- name: Add missing CNAME record
|
||||||
ansible.builtin.command:
|
ansible.builtin.command:
|
||||||
cmd: samba-tool dns add {{ samba_dns_server }} {{ samba_target_zone }} {{ samba_dns_record_name }} CNAME {{ item.target }} -P
|
cmd: samba-tool dns add {{ samba_dns_server }} {{ samba_target_zone }} {{ samba_dns_record_name }} CNAME {{ item.target }}
|
||||||
|
-U Administrator --password={{ samba_dns_admin_pass }}
|
||||||
register: cname_add
|
register: cname_add
|
||||||
changed_when: cname_add.rc == 0
|
changed_when: cname_add.rc == 0
|
||||||
failed_when: >
|
failed_when: >
|
||||||
|
|||||||
@ -9,14 +9,14 @@
|
|||||||
|
|
||||||
- name: List Samba DNS zones
|
- name: List Samba DNS zones
|
||||||
ansible.builtin.command:
|
ansible.builtin.command:
|
||||||
cmd: samba-tool dns zonelist {{ samba_dns_server }} -P
|
cmd: samba-tool dns zonelist {{ samba_dns_server }} -U Administrator --password={{ samba_dns_admin_pass }}
|
||||||
register: samba_zones
|
register: samba_zones
|
||||||
changed_when: false
|
changed_when: false
|
||||||
tags: [samba, samba_dns]
|
tags: [samba, samba_dns]
|
||||||
|
|
||||||
- name: Create DNS zones if missing
|
- name: Create DNS zones if missing
|
||||||
ansible.builtin.command:
|
ansible.builtin.command:
|
||||||
cmd: samba-tool dns zonecreate {{ samba_dns_server }} {{ item }} -P
|
cmd: samba-tool dns zonecreate {{ samba_dns_server }} {{ item }} -U Administrator --password={{ samba_dns_admin_pass }}
|
||||||
loop:
|
loop:
|
||||||
- "{{ prole_domain }}"
|
- "{{ prole_domain }}"
|
||||||
- "internal.{{ prole_domain }}"
|
- "internal.{{ prole_domain }}"
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
- name: Query existing PTR records
|
- name: Query existing PTR records
|
||||||
ansible.builtin.command:
|
ansible.builtin.command:
|
||||||
cmd: samba-tool dns query {{ samba_dns_server }} {{ lan_reverse_zone }} {{ item.last_octet }} PTR -P
|
cmd: samba-tool dns query {{ samba_dns_server }} {{ lan_reverse_zone }} {{ item.last_octet }} PTR -U Administrator --password={{ samba_dns_admin_pass }}
|
||||||
register: ptr_query
|
register: ptr_query
|
||||||
changed_when: false
|
changed_when: false
|
||||||
failed_when: false
|
failed_when: false
|
||||||
@ -11,14 +11,14 @@
|
|||||||
ptr_existing_values: >-
|
ptr_existing_values: >-
|
||||||
{{
|
{{
|
||||||
(ptr_query.stdout | default('') |
|
(ptr_query.stdout | default('') |
|
||||||
regex_findall('PTR\\s+([A-Za-z0-9.-]+)\\.?') |
|
regex_findall('PTR:\\s+([A-Za-z0-9.-]+)\\.?') |
|
||||||
map('regex_replace', '\\.$', '') |
|
map('regex_replace', '\\.$', '') |
|
||||||
list)
|
list)
|
||||||
}}
|
}}
|
||||||
|
|
||||||
- name: Remove stale PTR records
|
- name: Remove stale PTR records
|
||||||
ansible.builtin.command:
|
ansible.builtin.command:
|
||||||
cmd: samba-tool dns delete {{ samba_dns_server }} {{ lan_reverse_zone }} {{ item.last_octet }} PTR {{ ptr_value }} -P
|
cmd: samba-tool dns delete {{ samba_dns_server }} {{ lan_reverse_zone }} {{ item.last_octet }} PTR {{ ptr_value }} -U Administrator --password={{ samba_dns_admin_pass }}
|
||||||
loop: "{{ ptr_existing_values | reject('equalto', item.fqdn) | list }}"
|
loop: "{{ ptr_existing_values | reject('equalto', item.fqdn) | list }}"
|
||||||
loop_control:
|
loop_control:
|
||||||
loop_var: ptr_value
|
loop_var: ptr_value
|
||||||
@ -26,7 +26,7 @@
|
|||||||
|
|
||||||
- name: Add expected PTR record
|
- name: Add expected PTR record
|
||||||
ansible.builtin.command:
|
ansible.builtin.command:
|
||||||
cmd: samba-tool dns add {{ samba_dns_server }} {{ lan_reverse_zone }} {{ item.last_octet }} PTR {{ item.fqdn }} -P
|
cmd: samba-tool dns add {{ samba_dns_server }} {{ lan_reverse_zone }} {{ item.last_octet }} PTR {{ item.fqdn }} -U Administrator --password={{ samba_dns_admin_pass }}
|
||||||
register: ptr_add
|
register: ptr_add
|
||||||
changed_when: ptr_add.rc == 0
|
changed_when: ptr_add.rc == 0
|
||||||
failed_when: >
|
failed_when: >
|
||||||
|
|||||||
@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
- name: List Samba DNS zones
|
- name: List Samba DNS zones
|
||||||
ansible.builtin.command:
|
ansible.builtin.command:
|
||||||
cmd: samba-tool dns zonelist {{ samba_dns_server }} -P
|
cmd: samba-tool dns zonelist {{ samba_dns_server }} -U Administrator --password={{ samba_dns_admin_pass }}
|
||||||
register: samba_zones
|
register: samba_zones
|
||||||
changed_when: false
|
changed_when: false
|
||||||
tags: [samba, samba_reverse_dns]
|
tags: [samba, samba_reverse_dns]
|
||||||
@ -20,7 +20,7 @@
|
|||||||
|
|
||||||
- name: Create reverse DNS zones if missing
|
- name: Create reverse DNS zones if missing
|
||||||
ansible.builtin.command:
|
ansible.builtin.command:
|
||||||
cmd: samba-tool dns zonecreate {{ samba_dns_server }} {{ reverse_zone }} -P
|
cmd: samba-tool dns zonecreate {{ samba_dns_server }} {{ reverse_zone }} -U Administrator --password={{ samba_dns_admin_pass }}
|
||||||
loop: "{{ samba_reverse_zones }}"
|
loop: "{{ samba_reverse_zones }}"
|
||||||
loop_control:
|
loop_control:
|
||||||
loop_var: reverse_zone
|
loop_var: reverse_zone
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user