From: David Galloway Date: Thu, 14 Apr 2016 02:16:34 +0000 (-0400) Subject: nameserver: Add records task X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=a2aa98f2257932baf3a3975dee9284c93e96b948;p=ceph-cm-ansible.git nameserver: Add records task Signed-off-by: David Galloway --- diff --git a/roles/nameserver/defaults/main.yml b/roles/nameserver/defaults/main.yml index c5e7b6c..37cdbdb 100644 --- a/roles/nameserver/defaults/main.yml +++ b/roles/nameserver/defaults/main.yml @@ -5,3 +5,12 @@ secrets_repo: name: null url: null + +# Main BIND conf vars +named_conf_zones_path: "/var/named/zones" + +# Zone file conf vars +named_conf_soa_ttl: 3600 +named_conf_soa_refresh: 3600 +named_conf_soa_retry: 3600 +named_conf_soa_expire: 604800 diff --git a/roles/nameserver/tasks/main.yml b/roles/nameserver/tasks/main.yml index bbc2112..5dcc629 100644 --- a/roles/nameserver/tasks/main.yml +++ b/roles/nameserver/tasks/main.yml @@ -3,3 +3,8 @@ - include: packages.yml tags: - packages + +# Compile and write zone files +- include: records.yml + tags: + - records diff --git a/roles/nameserver/tasks/records.yml b/roles/nameserver/tasks/records.yml new file mode 100644 index 0000000..33ac519 --- /dev/null +++ b/roles/nameserver/tasks/records.yml @@ -0,0 +1,27 @@ +--- +- name: Create zone file path + file: + path: "{{ named_conf_zones_path }}" + state: directory + +- name: Set named_serial variable + set_fact: + named_serial: "{{ ansible_date_time.epoch }}" + +- name: Write forward zone files + template: + src: forward.j2 + dest: "{{ named_conf_zones_path }}/{{ item.key }}" + validate: named-checkzone {{ item.key }} %s + with_dict: "{{ named_domains }}" + +- name: Write reverse zone files + template: + src: reverse.j2 + dest: "{{ named_conf_zones_path }}/{{ item.1 }}" + validate: named-checkzone {{ item.1 }} %s + with_subelements: + - "{{ named_domains }}" + - reverse + - flags: + skip_missing: True diff --git a/roles/nameserver/templates/forward.j2 b/roles/nameserver/templates/forward.j2 new file mode 100644 index 0000000..5ce8c2e --- /dev/null +++ b/roles/nameserver/templates/forward.j2 @@ -0,0 +1,36 @@ +{% set domain = item.key %} +{% if item.value.ipvar is defined and item.value.ipvar.0 is defined %} +{% set ipvar = item.value.ipvar %} +{% endif %} +; +; {{ ansible_managed }} +; +$TTL {{ named_conf_soa_ttl }} +@ IN SOA {{ named_conf_soa }} ( + {{ named_serial }} ; Serial + {{ named_conf_soa_refresh }} ; Refresh + {{ named_conf_soa_retry }} ; Retry + {{ named_conf_soa_expire }} ; Expire + {{ named_conf_soa_ttl }} ; TTL + ) + +{% for nameserver in groups['nameserver'] %} + IN NS {{ nameserver }}. +{% endfor %} + +$ORIGIN {{ domain }}. + +{% if item.value.miscrecords is defined %} +{% for record in item.value.miscrecords %} +{{ record }} +{% endfor %} +{% endif %} + +{% if item.value.ipvar is defined and item.value.ipvar.0 is defined %} +{% for host in groups['all'] %} +{% if hostvars[host][ipvar] is defined %} +{% set ipaddr = hostvars[host][ipvar] %} +{{ hostvars[host]['inventory_hostname_short'] }} IN A {{ hostvars[host][ipvar] }} +{% endif %} +{% endfor %} +{% endif %} diff --git a/roles/nameserver/templates/reverse.j2 b/roles/nameserver/templates/reverse.j2 new file mode 100644 index 0000000..6d6e82a --- /dev/null +++ b/roles/nameserver/templates/reverse.j2 @@ -0,0 +1,30 @@ +{% set zone = item.1 %} +{% set domain = item.0.forward %} +{% set ipvar = item.0.ipvar %} +; +; {{ ansible_managed }} +; +$TTL {{ named_conf_soa_ttl }} +@ IN SOA {{ named_conf_soa }} ( + {{ named_serial }} ; Serial + {{ named_conf_soa_refresh }} ; Refresh + {{ named_conf_soa_retry }} ; Retry + {{ named_conf_soa_expire }} ; Expire + {{ named_conf_soa_ttl }} ; TTL + ) + +{% for nameserver in groups['nameserver'] %} + IN NS {{ nameserver }}. +{% endfor %} + +; Reverse zone {{ zone }} belongs to forward zone {{ domain }} + +{% for host in groups['all'] %} +{% if hostvars[host][ipvar] is defined %} +{% set octet1,octet2,octet3,octet4 = hostvars[host][ipvar].split('.') %} +{% set cutip = octet1 + '.' + octet2 + '.' + octet3 %} +{% if cutip == zone %} +{{ octet4 }} IN PTR {{ hostvars[host]['inventory_hostname_short'] }}.{{ domain }}. +{% endif %} +{% endif %} +{% endfor %}