]> git.apps.os.sepia.ceph.com Git - ceph-cm-ansible.git/commitdiff
nameserver: Add records task
authorDavid Galloway <dgallowa@redhat.com>
Thu, 14 Apr 2016 02:16:34 +0000 (22:16 -0400)
committerDavid Galloway <dgallowa@redhat.com>
Fri, 22 Apr 2016 16:37:47 +0000 (12:37 -0400)
Signed-off-by: David Galloway <dgallowa@redhat.com>
roles/nameserver/defaults/main.yml
roles/nameserver/tasks/main.yml
roles/nameserver/tasks/records.yml [new file with mode: 0644]
roles/nameserver/templates/forward.j2 [new file with mode: 0644]
roles/nameserver/templates/reverse.j2 [new file with mode: 0644]

index c5e7b6cdd3a947c5850430cd40c100434a608a0d..37cdbdb03f8315295b5cd6a0b117750ea004deb0 100644 (file)
@@ -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
index bbc2112d3e1e1ff80eef5461bd8ef996eb2e4988..5dcc629cb5edca9caec144ba86afeca0e4b449eb 100644 (file)
@@ -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 (file)
index 0000000..33ac519
--- /dev/null
@@ -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 (file)
index 0000000..5ce8c2e
--- /dev/null
@@ -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 (file)
index 0000000..6d6e82a
--- /dev/null
@@ -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 %}