34f12ba81c
Of course, I forgot that the name of TSIG keys is relevant, since it needs to be the same on both the master and the slave... While we're at it, allow to define keys separately and refer them by name in zone config, which avoids duplication.
86 lines
3.0 KiB
YAML
86 lines
3.0 KiB
YAML
---
|
|
|
|
- name: Install nsd3
|
|
apt: pkg=nsd3 state=present
|
|
|
|
- name: Configure nsd3
|
|
template: src=config.j2 dest={{ nsd_config_dir }}/nsd.conf owner=root group=root mode=0644
|
|
notify:
|
|
- restart nsd3
|
|
|
|
|
|
- name: Create zone configuration directory
|
|
file: path={{ zones_config_dir }} state=directory owner=root group=root mode=0755
|
|
|
|
- name: Create primary zone directory
|
|
file: path={{ primary_zones_dir }} state=directory owner=root group=root mode=0755
|
|
|
|
- name: Create secondary zone directory
|
|
file: path={{ secondary_zones_dir }} state=directory owner=nsd group=nsd mode=0755
|
|
|
|
- name: Create keys directory
|
|
file: path={{ keys_config_dir }} state=directory owner=root group=root mode=0755
|
|
|
|
|
|
# Unfortunately, nsd doesn't allow to say "include all files in this directory".
|
|
# The following implements the inclusion logic: the main config file includes
|
|
# a secondary file, in which we add include statements for each zone.
|
|
- name: Wipe include file
|
|
copy: dest={{ zones_include_file }} content="# Generated automatically by Ansible, do not edit by hand.\n"
|
|
|
|
- name: Configure primary nsd3 zones
|
|
template: src=primary_zone_config.j2 dest="{{ zones_config_dir }}/{{ item.zone_name }}.primary.conf" owner=root group=root mode=0644
|
|
notify:
|
|
- restart nsd3
|
|
with_items: "{{ nsd_primary_zones }}"
|
|
|
|
- name: Add include lines for primary zones to the include file
|
|
lineinfile:
|
|
state: present
|
|
dest: "{{ zones_include_file }}"
|
|
regexp: "^include: {{ zones_config_dir }}/{{ item.zone_name }}.primary.conf"
|
|
line: "include: {{ zones_config_dir }}/{{ item.zone_name }}.primary.conf"
|
|
with_items: "{{ nsd_primary_zones }}"
|
|
notify:
|
|
- restart nsd3
|
|
|
|
- name: Copy primary nsd3 zones
|
|
copy: src="files/nsd/{{ item.zone_filename }}" dest="{{ primary_zones_dir }}/{{ item.zone_filename }}" owner=root group=root mode=0644
|
|
with_items: "{{ nsd_primary_zones }}"
|
|
notify:
|
|
- rebuild nsd3 database
|
|
|
|
|
|
- name: Configure secondary nsd3 zones
|
|
template: src=secondary_zone_config.j2 dest="{{ zones_config_dir }}/{{ item.zone_name }}.secondary.conf" owner=root group=root mode=0644
|
|
notify:
|
|
- restart nsd3
|
|
with_items: "{{ nsd_secondary_zones }}"
|
|
|
|
- name: Add include lines for secondary zones to the include file
|
|
lineinfile:
|
|
state: present
|
|
dest: "{{ zones_include_file }}"
|
|
regexp: "^include: {{ zones_config_dir }}/{{ item.zone_name }}.secondary.conf"
|
|
line: "include: {{ zones_config_dir }}/{{ item.zone_name }}.secondary.conf"
|
|
with_items: "{{ nsd_secondary_zones }}"
|
|
notify:
|
|
- restart nsd3
|
|
|
|
|
|
- name: Configure TSIG keys
|
|
template: src=tsigkey_config.j2 dest="{{ keys_config_dir }}/{{ item.tsig_keyname }}.conf" owner=root group=root mode=0644
|
|
notify:
|
|
- restart nsd3
|
|
with_items: "{{ nsd_tsig_keys }}"
|
|
|
|
- name: Add include lines for TSIG keys
|
|
lineinfile:
|
|
state: present
|
|
dest: "{{ zones_include_file }}"
|
|
regexp: "^include: {{ keys_config_dir }}/{{ item.tsig_keyname }}.conf"
|
|
line: "include: {{ keys_config_dir }}/{{ item.tsig_keyname }}.conf"
|
|
with_items: "{{ nsd_tsig_keys }}"
|
|
notify:
|
|
- restart nsd3
|