Compare commits

...

4 commits

Author SHA1 Message Date
s3lph 25f85bfc52
chore: release 0.4.1
All checks were successful
Ansible Galaxy / deploy (push) Successful in 1m29s
Ansible Lint / build (push) Successful in 1m28s
2024-05-05 13:16:48 +02:00
s3lph ffc1ed7fde
fix: update min_ansible to 2.15 due to deb822_repository 2024-05-05 13:16:22 +02:00
s3lph 0d364f3359
fix: update requirements.yml in docs example 2024-05-05 13:15:51 +02:00
s3lph f568b38831
fix: only start knot after rendering the configuration 2024-05-05 13:13:58 +02:00
7 changed files with 52 additions and 60 deletions

View file

@ -1,5 +1,3 @@
---
collections:
- name: https://gitlab.com/s3lph/ansible-collection-nameserver
type: git
version: master
- name: s3lph.nameserver

View file

@ -7,7 +7,7 @@ namespace: s3lph
name: nameserver
# The version of the collection. Must be compatible with semantic versioning
version: "0.4.0"
version: "0.4.1"
# The path to the Markdown (.md) readme file. This path is relative to the root of the collection
readme: README.md

View file

@ -1,7 +1,7 @@
---
# Collections must specify a minimum required ansible version to upload
# to galaxy
requires_ansible: '>=2.10'
requires_ansible: '>=2.15'
# Content that Ansible needs to load from another location or that has
# been deprecated/removed

View file

@ -10,3 +10,51 @@
vars:
zones: "{{ hostvars[inventory_hostname] | dict2items | selectattr('key', 'match', '^knot_zone_.+$') | map(attribute='value') | list }}"
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

View file

@ -16,9 +16,3 @@
- knot
- knot-dnsutils
- knot-dnssecutils
- name: Start and enable knot
ansible.builtin.service:
name: knot
state: started
enabled: true

View file

@ -6,14 +6,9 @@
- "role::knot"
- "role::knot:install"
- name: Render zonefiles
ansible.builtin.import_tasks: zones.yml
tags:
- "role::knot"
- "role::knot:zones"
- name: Configure knot
ansible.builtin.import_tasks: config.yml
tags:
- "role::knot"
- "role::knot:config"
- "role::knot:zones" # Backwards compat; this used to be a separate file

View 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