--- # DNS Configuration and Reverse DNS Setup - name: Wait for Samba DNS to be ready wait_for: port: 53 host: 127.0.0.1 delay: 5 timeout: 30 - name: Check if reverse DNS zone already exists command: > samba-tool dns zonelist 127.0.0.1 --username=Administrator --password={{ samba_admin_password }} register: existing_zones changed_when: false failed_when: false - name: Create reverse DNS zone command: > samba-tool dns zonecreate 127.0.0.1 100.168.192.in-addr.arpa --username=Administrator --password={{ samba_admin_password }} register: reverse_zone changed_when: reverse_zone.rc == 0 failed_when: reverse_zone.rc != 0 and "already exists" not in reverse_zone.stderr when: "'100.168.192.in-addr.arpa' not in existing_zones.stdout" - name: Check existing NS records in reverse zone command: > samba-tool dns query 127.0.0.1 100.168.192.in-addr.arpa @ NS --username=Administrator --password={{ samba_admin_password }} register: existing_ns_records changed_when: false failed_when: false - name: Add NS record for reverse zone command: > samba-tool dns add 127.0.0.1 100.168.192.in-addr.arpa @ NS {{ target_hostname }}.{{ samba_realm }}. --username=Administrator --password={{ samba_admin_password }} register: dns_ns_record changed_when: dns_ns_record.rc == 0 failed_when: dns_ns_record.rc != 0 and "already exists" not in dns_ns_record.stderr when: "target_hostname + '.' + samba_realm + '.' not in existing_ns_records.stdout" - name: Get current server IP address for DNS record shell: | ip route get 8.8.8.8 | grep -oP 'src \K\S+' | head -1 register: current_server_ip changed_when: false - name: Extract host part from IP address set_fact: ip_host_part: "{{ current_server_ip.stdout.split('.')[3] }}" - name: Check existing PTR records in reverse zone command: > samba-tool dns query 127.0.0.1 100.168.192.in-addr.arpa {{ ip_host_part }} PTR --username=Administrator --password={{ samba_admin_password }} register: existing_ptr_records changed_when: false failed_when: false - name: Add PTR record for reverse zone command: > samba-tool dns add 127.0.0.1 100.168.192.in-addr.arpa {{ ip_host_part }} PTR {{ target_hostname }}.{{ samba_realm }}. --username=Administrator --password={{ samba_admin_password }} register: dns_ptr_record changed_when: dns_ptr_record.rc == 0 failed_when: dns_ptr_record.rc != 0 and "already exists" not in dns_ptr_record.stderr when: "target_hostname + '.' + samba_realm + '.' not in existing_ptr_records.stdout"