Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 31 additions & 19 deletions roles/check_dns/tasks/main.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,24 @@

- name: Check internal cluster DNS resolution for the bastion
tags: check_dns, dns
shell: "dig +short {{ env.bastion.networking.hostname }}.{{ env.bastion.networking.base_domain }} | tail -n1"
ansible.builtin.shell: >
set -o pipefail;
dig +short {{ env.bastion.networking.hostname }}.{{ env.cluster.networking.metadata_name }}.{{ env.bastion.networking.base_domain }} | tail -n1
register: bastion_lookup
failed_when: env.bastion.networking.ip != bastion_lookup.stdout
when: env.bastion.networking.internal_ip is not defined or env.bastion.networking.internal_ip == None

- name: Check internal cluster DNS resolution for the bastion with Internal_IP
tags: check_dns, dns
shell: "dig +short {{ env.bastion.networking.hostname }}.{{ env.bastion.networking.base_domain }} | tail -n1"
ansible.builtin.shell: >
set -o pipefail;
dig +short {{ env.bastion.networking.hostname }}.{{ env.cluster.networking.metadata_name }}.{{ env.bastion.networking.base_domain }} | tail -n1
register: bastion_lookup
failed_when: env.bastion.networking.internal_ip != bastion_lookup.stdout
when: env.bastion.networking.internal_ip is defined and env.bastion.networking.internal_ip != None

- name: Set expected IP for DNS check
set_fact:
ansible.builtin.set_fact:
expected_ip: >-
{{
env.bastion.networking.internal_ip
Expand All @@ -29,7 +33,7 @@

- name: Check internal cluster DNS resolution for external API and apps services
tags: check_dns, dns
shell: "dig +short {{ item }} | tail -n1"
ansible.builtin.shell: "set -o pipefail; dig +short {{ item }} | tail -n1"
loop:
- "api.{{ env.cluster.networking.metadata_name }}.{{ env.cluster.networking.base_domain }}"
- "apps.{{ env.cluster.networking.metadata_name }}.{{ env.cluster.networking.base_domain }}"
Expand All @@ -38,79 +42,87 @@
changed_when: false

- name: Fail if any external DNS record resolves to wrong IP
fail:
ansible.builtin.fail:
msg: >
DNS mismatch: {{ item.item }} resolved to {{ item.stdout }},
expected {{ expected_ip }}
loop: "{{ services_lookup.results }}"
when: item.stdout != expected_ip
tags: check_dns, dns
tags: check_dns, dns

- name: Check internal cluster DNS resolution for internal API services
tags: check_dns, dns
shell: "dig +short api-int.{{ env.cluster.networking.metadata_name }}.{{ env.cluster.networking.base_domain }} | tail -n1"
ansible.builtin.shell: "set -o pipefail; dig +short api-int.{{ env.cluster.networking.metadata_name }}.{{ env.cluster.networking.base_domain }} | tail -n1"
register: api_int_lookup
changed_when: false

- name: Fail if internal DNS record resolves to wrong IP
fail:
ansible.builtin.fail:
msg: >
DNS mismatch: api-int.{{ env.cluster.networking.metadata_name }}.{{ env.cluster.networking.base_domain }}
resolved to {{ api_int_lookup.stdout }},
expected {{ expected_ip }}
when: api_int_lookup.stdout != expected_ip
tags: check_dns, dns
tags: check_dns, dns

- name: Check internal cluster DNS resolution for bootstrap
tags: check_dns, dns
shell: "dig +short {{ env.cluster.nodes.bootstrap.hostname }}.{{ env.cluster.networking.metadata_name }}.{{ env.cluster.networking.base_domain }} | tail -n1"
ansible.builtin.shell: >
set -o pipefail;
dig +short {{ env.cluster.nodes.bootstrap.hostname }}.{{ env.cluster.networking.metadata_name }}.{{ env.cluster.networking.base_domain }} | tail -n1
register: bootstrap_lookup
failed_when: env.cluster.nodes.bootstrap.ip != bootstrap_lookup.stdout
when: env.cluster.nodes.bootstrap is defined

- name: Print results from bootstrap lookup
tags: check_dns, dns
debug:
ansible.builtin.debug:
var: bootstrap_lookup.stdout
when: env.cluster.nodes.bootstrap is defined

- name: Check control nodes DNS resolution
tags: check_dns, dns
shell: "dig +short {{ env.cluster.nodes.control.hostname[i] }}.{{ env.cluster.networking.metadata_name }}.{{ env.cluster.networking.base_domain }} | tail -n1"
ansible.builtin.shell: >
set -o pipefail;
dig +short {{ env.cluster.nodes.control.hostname[i] }}.{{ env.cluster.networking.metadata_name }}.{{ env.cluster.networking.base_domain }} | tail -n1
register: control_lookup
failed_when: env.cluster.nodes.control.ip[i] != control_lookup.stdout
with_sequence: start=0 end={{(env.cluster.nodes.control.hostname | length) - 1}} stride=1

Check warning on line 90 in roles/check_dns/tasks/main.yaml

View workflow job for this annotation

GitHub Actions / Ansible_Lint

jinja[spacing]

Jinja2 spacing could be improved: start=0 end={{(env.cluster.nodes.control.hostname | length) - 1}} stride=1 -> start=0 end={{ (env.cluster.nodes.control.hostname | length) - 1 }} stride=1
loop_control:
extended: yes
extended: true
index_var: i

- name: Check compute nodes DNS resolution
tags: check_dns, dns
shell: "dig +short {{ env.cluster.nodes.compute.hostname[i] }}.{{ env.cluster.networking.metadata_name }}.{{ env.cluster.networking.base_domain }} | tail -n1"
ansible.builtin.shell: >
set -o pipefail;
dig +short {{ env.cluster.nodes.compute.hostname[i] }}.{{ env.cluster.networking.metadata_name }}.{{ env.cluster.networking.base_domain }} | tail -n1
register: compute_lookup
failed_when: env.cluster.nodes.compute.ip[i] != compute_lookup.stdout
with_sequence: start=0 end={{(env.cluster.nodes.compute.hostname | length) - 1}} stride=1

Check warning on line 102 in roles/check_dns/tasks/main.yaml

View workflow job for this annotation

GitHub Actions / Ansible_Lint

jinja[spacing]

Jinja2 spacing could be improved: start=0 end={{(env.cluster.nodes.compute.hostname | length) - 1}} stride=1 -> start=0 end={{ (env.cluster.nodes.compute.hostname | length) - 1 }} stride=1
loop_control:
extended: yes
extended: true
index_var: i
when: env.cluster.nodes.compute.hostname is defined and env.cluster.nodes.compute.hostname[0] is defined and env.cluster.nodes.compute.hostname[0] != None

- name: Check infrastructure nodes DNS resolution
tags: check_dns, dns
shell: "dig +short {{ env.cluster.nodes.infra.hostname[i] }}.{{ env.cluster.networking.metadata_name }}.{{ env.cluster.networking.base_domain }} | tail -n1"
ansible.builtin.shell: >
set -o pipefail;
dig +short {{ env.cluster.nodes.infra.hostname[i] }}.{{ env.cluster.networking.metadata_name }}.{{ env.cluster.networking.base_domain }} | tail -n1
register: infra_lookup
failed_when: env.cluster.nodes.infra.ip[i] != infra_lookup.stdout
with_sequence: start=0 end={{(env.cluster.nodes.infra.hostname | length) - 1}} stride=1

Check warning on line 115 in roles/check_dns/tasks/main.yaml

View workflow job for this annotation

GitHub Actions / Ansible_Lint

jinja[spacing]

Jinja2 spacing could be improved: start=0 end={{(env.cluster.nodes.infra.hostname | length) - 1}} stride=1 -> start=0 end={{ (env.cluster.nodes.infra.hostname | length) - 1 }} stride=1
loop_control:
extended: yes
extended: true
index_var: i
when: env.cluster.nodes.infra.hostname is defined

- name: Check external DNS resolution from forwarder
tags: check_dns, dns
register: external_dns_check
failed_when: '"server can" in external_dns_check.stdout'
command: "nslookup {{ item }}"
ansible.builtin.command: "nslookup {{ item }}"
loop:
- www.google.com
- www.ibm.com
Expand Down
2 changes: 1 addition & 1 deletion roles/dns/templates/dns-named.conf.j2
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ zone "{{ env.cluster.networking.metadata_name }}.{{ env.cluster.networking.base_
// forwared zone
zone "{{ env.cluster.networking.base_domain }}" IN {
type forward;
forwarders { {{ env.bastion.networking.nameserver2}} };
forwarders { {{ env.bastion.networking.nameserver2}}; };
};
{% endif %}

Expand Down