From: David Galloway Date: Wed, 19 Jan 2022 17:48:51 +0000 (-0500) Subject: nameserver: Check for and print IP collisions X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F665%2Fhead;p=ceph-cm-ansible.git nameserver: Check for and print IP collisions Signed-off-by: David Galloway --- diff --git a/roles/nameserver/tasks/main.yml b/roles/nameserver/tasks/main.yml index 2abf5c83..a5bdf258 100644 --- a/roles/nameserver/tasks/main.yml +++ b/roles/nameserver/tasks/main.yml @@ -48,3 +48,33 @@ - records when: (named_conf_slave is undefined) or (named_conf_slave is defined and named_conf_slave == false) + +# The tasks below are last so the grep output is near the end of the play +- set_fact: + have_collisions: true + when: + - (named_conf_slave is undefined) or (named_conf_slave is defined and named_conf_slave == false) + - nameserver_collisions_grep is defined and nameserver_collisions_grep.stdout | length > 0 + tags: + - records + +- name: Print IP collisions + debug: + msg: + - "WARNING: The following IP addresses have multiple records in DNS. Check for IP collisions!" + - "Either re-run this playbook with '-vvv' or `grep -r -w {{ inventory_dir }}/{{ lab_name }} {{ inventory_dir }}/group_vars/nameserver.yml` for the IPs below." + - "{{ nameserver_collisions_grep.stdout_lines }}" + when: have_collisions is defined and have_collisions|bool + tags: + - records + +- name: grep duplicated IPs in ansible inventory + local_action: + module: command + cmd: "grep -r -w {{ item }} {{ inventory_dir }}/{{ lab_name }} {{ inventory_dir }}/group_vars/nameserver.yml" + become: false + connection: local + with_items: "{{ nameserver_collisions_grep.stdout_lines }}" + when: have_collisions is defined and have_collisions|bool + tags: + - records diff --git a/roles/nameserver/tasks/records.yml b/roles/nameserver/tasks/records.yml index 948dfab2..cadbc111 100644 --- a/roles/nameserver/tasks/records.yml +++ b/roles/nameserver/tasks/records.yml @@ -46,6 +46,12 @@ when: (item.value.dynamic != true) or (item.value.dynamic == true and item.value.ddns_hostname_prefixes is defined) +- name: grep temp zone files for IP collisions + shell: 'grep -E -o -h "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)" {{ named_tempdir.stdout }}/* | sort | uniq -d' + register: nameserver_collisions_grep + when: (named_conf_slave is undefined) or + (named_conf_slave is defined and named_conf_slave == false) + - name: Write reverse zone files to tempdir template: src: reverse.j2