infra/ansible/roles/ns/templates/zone.j2

57 lines
1.6 KiB
Django/Jinja

$ORIGIN {{ item.name }}.
{% if 'in-addr.arpa' in item.name %}
$TTL 86400
{% else %}
$TTL 300
{% endif %}
; SOA Record
@ IN SOA {{ item.name_servers[0] }} gmcintire.gmail.com. (
{{ now().strftime('%Y%m%d%H') }} ; Serial (YYYYMMDDHH)
10800 ; Refresh
3600 ; Retry
604800 ; Expire
3600 ) ; Negative Cache TTL
; Name Servers
{% for ns in item.name_servers %}
@ IN NS {{ ns }}
{% endfor %}
; MX Records
{% if item.mail_servers is defined %}
{% for mx in item.mail_servers %}
@ IN MX {{ mx.preference }} {{ mx.name }}
{% endfor %}
{% endif %}
; A Records
{% if item.hosts is defined %}
{% for host in item.hosts %}
{{ host.name }} IN A {{ host.ip }}
{% endfor %}
{% endif %}
; TXT Records
{% if item.text is defined %}
{% for txt in item.text %}
{% set txt_value = txt.text.strip('"') %}
{% if txt_value | length > 255 %}
{{ txt.name }} IN TXT ( "{{ txt_value[:255] }}"
{% set remaining = txt_value[255:] %}
{% for i in range(0, remaining | length, 255) %}
"{{ remaining[i:i+255] }}"{% if not loop.last %} {% endif %}
{% endfor %} )
{% else %}
{{ txt.name }} IN TXT "{{ txt_value }}"
{% endif %}
{% endfor %}
{% endif %}
; Other Records (CNAME, SRV, etc.)
{% if item.other_name_servers is defined %}
{% for record in item.other_name_servers %}
{{ record }}
{% endfor %}
{% endif %}