From e3e2ee76b6df3f16f8aac92914c07a38170953e8 Mon Sep 17 00:00:00 2001 From: Aaron LI Date: Sat, 3 Mar 2018 00:18:45 +0800 Subject: dns/nsd: use fileglob lookup to help zones templating; also check zone files --- roles/dns/tasks/main.yml | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/roles/dns/tasks/main.yml b/roles/dns/tasks/main.yml index efc9669..68663f7 100644 --- a/roles/dns/tasks/main.yml +++ b/roles/dns/tasks/main.yml @@ -58,18 +58,34 @@ command: nsd-control-setup when: not stat_result.stat.exists +- name: NSD - get the list of zone files + set_fact: + zonefiles: "{{ lookup('fileglob', '../templates/zones/*.j2', wantlist=True) }}" + +- debug: var=zonefiles + - name: NSD - create zones directory file: path: /usr/local/etc/nsd/zones state: directory - name: NSD - generate zone files + vars: + domain: "{{ item | basename | regex_replace('\\.zone\\.j2', '') }}" template: src: "{{ item }}" - dest: /usr/local/etc/nsd/zones/{{ item | basename | regex_replace('\.j2', '') }} - # NOTE: `with_fileglob` always operates from `files/` - with_fileglob: - - "../templates/zones/*.j2" + dest: "/usr/local/etc/nsd/zones/{{ domain }}.zone" + # XXX: `validate` doesn't work with `with_items`??? + validate: "nsd-checkzone {{ domain }} %s" + with_items: "{{ zonefiles }}" + notify: reload-nsd + +# XXX: the above `validate` doesn't work with `with_items`??? +- name: NSD - check zone files + vars: + domain: "{{ item | basename | regex_replace('\\.zone\\.j2', '') }}" + command: "nsd-checkzone {{ domain }} /usr/local/etc/nsd/zones/{{ domain }}.zone" + with_items: "{{ zonefiles }}" # NOTE: requires variable `zonefiles` - name: NSD - generate configuration -- cgit v1.2.2