fix: only start knot after rendering the configuration
This commit is contained in:
parent
783dbdc986
commit
f568b38831
4 changed files with 49 additions and 55 deletions
|
@ -10,3 +10,51 @@
|
||||||
vars:
|
vars:
|
||||||
zones: "{{ hostvars[inventory_hostname] | dict2items | selectattr('key', 'match', '^knot_zone_.+$') | map(attribute='value') | list }}"
|
zones: "{{ hostvars[inventory_hostname] | dict2items | selectattr('key', 'match', '^knot_zone_.+$') | map(attribute='value') | list }}"
|
||||||
notify: restart knot
|
notify: restart knot
|
||||||
|
|
||||||
|
- name: Create knot zone directories
|
||||||
|
ansible.builtin.file:
|
||||||
|
path: "{{ item }}"
|
||||||
|
state: directory
|
||||||
|
owner: knot
|
||||||
|
group: knot
|
||||||
|
mode: "0750"
|
||||||
|
loop:
|
||||||
|
- "{{ knot_zone_master_storage_path }}"
|
||||||
|
- "{{ knot_zone_replica_storage_path }}"
|
||||||
|
|
||||||
|
- name: Make sure all zones have a name
|
||||||
|
ansible.builtin.assert:
|
||||||
|
that:
|
||||||
|
- "'name' in item.value"
|
||||||
|
- "item.value.name | type_debug == 'str'"
|
||||||
|
fail_msg: "{{ item.key }} does not have a name"
|
||||||
|
loop: "{{ hostvars[inventory_hostname] | dict2items | selectattr('key', 'match', '^knot_zone_.+$') | list }}"
|
||||||
|
|
||||||
|
- name: Make sure all zones have at least one master defined
|
||||||
|
ansible.builtin.assert:
|
||||||
|
that:
|
||||||
|
- "'masters' in item.value"
|
||||||
|
- "item.value.masters | type_debug == 'list'"
|
||||||
|
- "item.value.masters | length > 0"
|
||||||
|
fail_msg: "{{ item.key }} does not have a zone master"
|
||||||
|
loop: "{{ hostvars[inventory_hostname] | dict2items | selectattr('key', 'match', '^knot_zone_.+$') | list }}"
|
||||||
|
|
||||||
|
- name: Render knot zone files
|
||||||
|
ansible.builtin.template:
|
||||||
|
src: var/lib/knot/master/zone.j2
|
||||||
|
dest: "{{ knot_zone_master_storage_path }}/{{ item.name }}zone"
|
||||||
|
owner: knot
|
||||||
|
group: knot
|
||||||
|
mode: "0640"
|
||||||
|
validate: /usr/bin/kzonecheck -v %s
|
||||||
|
vars:
|
||||||
|
zone: "{{ item }}"
|
||||||
|
when: "inventory_hostname in item['masters']"
|
||||||
|
loop: "{{ hostvars[inventory_hostname] | dict2items | selectattr('key', 'match', '^knot_zone_.+$') | map(attribute='value') | list }}"
|
||||||
|
notify: reload knot
|
||||||
|
|
||||||
|
- name: Start and enable knot
|
||||||
|
ansible.builtin.service:
|
||||||
|
name: knot
|
||||||
|
state: started
|
||||||
|
enabled: true
|
||||||
|
|
|
@ -16,9 +16,3 @@
|
||||||
- knot
|
- knot
|
||||||
- knot-dnsutils
|
- knot-dnsutils
|
||||||
- knot-dnssecutils
|
- knot-dnssecutils
|
||||||
|
|
||||||
- name: Start and enable knot
|
|
||||||
ansible.builtin.service:
|
|
||||||
name: knot
|
|
||||||
state: started
|
|
||||||
enabled: true
|
|
||||||
|
|
|
@ -6,14 +6,9 @@
|
||||||
- "role::knot"
|
- "role::knot"
|
||||||
- "role::knot:install"
|
- "role::knot:install"
|
||||||
|
|
||||||
- name: Render zonefiles
|
|
||||||
ansible.builtin.import_tasks: zones.yml
|
|
||||||
tags:
|
|
||||||
- "role::knot"
|
|
||||||
- "role::knot:zones"
|
|
||||||
|
|
||||||
- name: Configure knot
|
- name: Configure knot
|
||||||
ansible.builtin.import_tasks: config.yml
|
ansible.builtin.import_tasks: config.yml
|
||||||
tags:
|
tags:
|
||||||
- "role::knot"
|
- "role::knot"
|
||||||
- "role::knot:config"
|
- "role::knot:config"
|
||||||
|
- "role::knot:zones" # Backwards compat; this used to be a separate file
|
||||||
|
|
|
@ -1,43 +0,0 @@
|
||||||
---
|
|
||||||
|
|
||||||
- name: Create knot zone directories
|
|
||||||
ansible.builtin.file:
|
|
||||||
path: "{{ item }}"
|
|
||||||
state: directory
|
|
||||||
owner: knot
|
|
||||||
group: knot
|
|
||||||
mode: "0750"
|
|
||||||
loop:
|
|
||||||
- "{{ knot_zone_master_storage_path }}"
|
|
||||||
- "{{ knot_zone_replica_storage_path }}"
|
|
||||||
|
|
||||||
- name: Make sure all zones have a name
|
|
||||||
ansible.builtin.assert:
|
|
||||||
that:
|
|
||||||
- "'name' in item.value"
|
|
||||||
- "item.value.name | type_debug == 'str'"
|
|
||||||
fail_msg: "{{ item.key }} does not have a name"
|
|
||||||
loop: "{{ hostvars[inventory_hostname] | dict2items | selectattr('key', 'match', '^knot_zone_.+$') | list }}"
|
|
||||||
|
|
||||||
- name: Make sure all zones have at least one master defined
|
|
||||||
ansible.builtin.assert:
|
|
||||||
that:
|
|
||||||
- "'masters' in item.value"
|
|
||||||
- "item.value.masters | type_debug == 'list'"
|
|
||||||
- "item.value.masters | length > 0"
|
|
||||||
fail_msg: "{{ item.key }} does not have a zone master"
|
|
||||||
loop: "{{ hostvars[inventory_hostname] | dict2items | selectattr('key', 'match', '^knot_zone_.+$') | list }}"
|
|
||||||
|
|
||||||
- name: Render knot zone files
|
|
||||||
ansible.builtin.template:
|
|
||||||
src: var/lib/knot/master/zone.j2
|
|
||||||
dest: "{{ knot_zone_master_storage_path }}/{{ item.name }}zone"
|
|
||||||
owner: knot
|
|
||||||
group: knot
|
|
||||||
mode: "0640"
|
|
||||||
validate: /usr/bin/kzonecheck -v %s
|
|
||||||
vars:
|
|
||||||
zone: "{{ item }}"
|
|
||||||
when: "inventory_hostname in item['masters']"
|
|
||||||
loop: "{{ hostvars[inventory_hostname] | dict2items | selectattr('key', 'match', '^knot_zone_.+$') | map(attribute='value') | list }}"
|
|
||||||
notify: reload knot
|
|
Loading…
Reference in a new issue