diff options
author | Christian Pointner <equinox@spreadspace.org> | 2019-10-06 05:08:38 +0200 |
---|---|---|
committer | Christian Pointner <equinox@spreadspace.org> | 2019-10-06 05:08:38 +0200 |
commit | 180714cd58dac936954c778d9539eb0618e63cea (patch) | |
tree | 2eeedc7073ebddd23c5b0342cccf4633654be794 /roles/bind | |
parent | keep using systemd-resolved for now (diff) |
added bind role
Diffstat (limited to 'roles/bind')
-rw-r--r-- | roles/bind/defaults/main.yml | 14 | ||||
-rw-r--r-- | roles/bind/handlers/main.yml | 5 | ||||
-rw-r--r-- | roles/bind/tasks/main.yml | 109 | ||||
-rw-r--r-- | roles/bind/templates/slave-zones.j2 | 22 |
4 files changed, 150 insertions, 0 deletions
diff --git a/roles/bind/defaults/main.yml b/roles/bind/defaults/main.yml new file mode 100644 index 00000000..e5b4c688 --- /dev/null +++ b/roles/bind/defaults/main.yml @@ -0,0 +1,14 @@ +--- +## options + +# bind_option_empty_zones_enable: yes +# bind_option_allow_transfer: [] +# bind_option_allow_recursion: [] +# bind_option_notify: no + + +## zone configs + +# bind_empty_onion_zone: no +# bind_master_zones: ... +# bind_slave_zones: ... diff --git a/roles/bind/handlers/main.yml b/roles/bind/handlers/main.yml new file mode 100644 index 00000000..1bb588c7 --- /dev/null +++ b/roles/bind/handlers/main.yml @@ -0,0 +1,5 @@ +--- +- name: reload bind + systemd: + name: bind9 + state: reloaded diff --git a/roles/bind/tasks/main.yml b/roles/bind/tasks/main.yml new file mode 100644 index 00000000..92e37e6a --- /dev/null +++ b/roles/bind/tasks/main.yml @@ -0,0 +1,109 @@ +--- +- name: install bind + apt: + name: bind9 + state: present + +- name: set bind options + blockinfile: + path: /etc/bind/named.conf.options + block: | + {% if bind_option_empty_zones_enable is defined %} + empty-zones-enable {% if bind_option_empty_zones_enable %}yes{% else %}no{% endif %}; + {% endif %} + {% if bind_option_notify is defined %} + notify {% if bind_option_notify %}yes{% else %}no{% endif %}; + {% endif %} + {% if bind_option_allow_transfer is defined %} + + allow-transfer { + {% for item in bind_option_allow_transfer %} + {{ item }}; + {% endfor %} + }; + {% endif %} + {% if bind_option_allow_recursion is defined %} + + allow-recursion { + {% for item in bind_option_allow_recursion %} + {{ item }}; + {% endfor %} + }; + {% endif %} + insertbefore: '};' + marker: " // {mark} ansible managed block" + notify: reload bind + + +- name: add empty .onion zone + when: bind_empty_onion_zone + copy: + dest: /etc/bind/named.conf.onion + content: | + // block .onion addresses + zone "onion" { + type master; + file "/etc/bind/db.empty"; + notify no; + }; + notify: reload bind + +- name: remove empty .onion zone + when: not bind_empty_onion_zone + file: + path: /etc/bind/named.conf.onion + state: absent + notify: reload bind + +- name: enable/disable empty .onion zone + lineinfile: + path: /etc/bind/named.conf + line: 'include "/etc/bind/named.conf.onion";' + state: "{% if bind_empty_onion_zone %}present{% else %}absent{% endif %}" + notify: reload bind + + +- name: add slave zone configuration + when: bind_slave_zones is defined + template: + src: slave-zones.j2 + dest: /etc/bind/named.conf.slave-zones + notify: reload bind + +- name: remove slave zone configuration + when: bind_slave_zones is not defined + file: + path: /etc/bind/named.conf.slave-zones + state: absent + notify: reload bind + +- name: enable/disable slave zone configuration + lineinfile: + path: /etc/bind/named.conf + line: 'include "/etc/bind/named.conf.slave-zones";' + state: "{% if bind_slave_zones is defined %}present{% else %}absent{% endif %}" + notify: reload bind + + +# - name: add master zone configuration +# when: bind_master_zones is defined +# template: +# src: master-zones.j2 +# dest: /etc/bind/named.conf.master-zones +# notify: reload bind + +# - name: remove master zone configuration +# when: bind_master_zones is not defined +# file: +# path: /etc/bind/named.conf.master-zones +# state: absent +# notify: reload bind + +# ## TODO: install zone files for master zones + +# - name: enable/disable master zone configuration +# lineinfile: +# path: /etc/bind/named.conf +# line: 'include "/etc/bind/named.conf.master-zones";' +# state: "{% if bind_master_zones is defined %}present{% else %}absent{% endif %}" +# notify: reload bind diff --git a/roles/bind/templates/slave-zones.j2 b/roles/bind/templates/slave-zones.j2 new file mode 100644 index 00000000..da9ba699 --- /dev/null +++ b/roles/bind/templates/slave-zones.j2 @@ -0,0 +1,22 @@ +// Masters + +{% for group in bind_slave_zones %} +masters {{ group.name }} { +{% for master in group.masters %} + {{ master }}; +{% endfor %} +}; + +{% endfor %} + +// Zones +{% for group in bind_slave_zones %} +{% for zone in group.zones %} + +zone "{{ zone }}" { + type slave; + file "/var/cache/bind/db.{{ zone }}.sec"; + masters { {{ group.name }}; }; +}; +{% endfor %} +{% endfor %} |