CentOS 7.x automated setup of bind dns server
From Notes_Wiki
Home > CentOS > CentOS 7.x > DevOps > Automated Configuration > Ansible > Ansible Playbooks > CentOS 7.x automated setup of bind dns server
The ansible script does basic configuration without MX records and does not supports multiple-zones with different hosts.
Variables are as follows:
- zone_names
- Names of zones. These must end with dot(.).
- zone_address
- A address of zone. That is if you defining example.com zone, what address should be resolved when you try http://example.com or ping example.com
- name_server
- You must have a DNS server. Hostname of DNS server from servers list defined later should be mentioned here.
- servers
- List of servers with name and IP
dns_servers.yaml
--- - name: Configure DNS using bind hosts: dns_servers remote_user: root vars: zone_names: - example.com. zone_address: 192.168.122.1 allow_query_from: "10.0.0.0/8; 172.16.0.0/12; 192.168.0.0/16;" name_server: dns1 recursion: yes servers: - { hostname: dns1, ip: 192.168.122.97 } - { hostname: mail1, ip: 192.168.122.27 } - { hostname: mail2, ip: 192.168.122.233 } tasks: - name: Install bind and bind-utils package yum: name="{{item}}" state=present with_items: - bind - bind-utils - name: Create custom named.conf with desired zone template: src=named.conf dest=/etc/named.conf owner=root group=named mode=640 notify: - restart bind - name: Copy zone forward files for all zones to /var/named template: src="zone.forward" dest="/var/named/{{item}}forward" owner=root group=named mode=640 with_items: "{{zone_names}}" notify: - restart bind - name: Disable IPv6 support lineinfile: dest=/etc/sysconfig/named line='OPTIONS="-4"' regexp="^OPTIONS" notify: - restart bind - name: Start and enable bind service service: name=named state=started enabled=yes handlers: - name: restart bind service: name=named state=restarted
named.conf
options { listen-on port 53 { 127.0.0.1; any; }; listen-on-v6 port 53 { ::1; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; allow-query { localhost; {{allow_query_from}} }; recursion {{recursion}}; dnssec-enable no; dnssec-validation no; dnssec-lookaside auto; /* Path to ISC DLV key */ bindkeys-file "/etc/named.iscdlv.key"; managed-keys-directory "/var/named/dynamic"; }; logging { channel default_debug { file "data/named.run"; severity dynamic; }; }; {% for item in zone_names %} zone "{{item}}" IN { type master; file "{{item}}forward"; }; {% endfor %} zone "." IN { type hint; file "named.ca"; }; include "/etc/named.rfc1912.zones"; include "/etc/named.root.key";
zone.forward
$TTL 3600 @ SOA ns.{{item}} root.{{item}} (1 15m 5m 30d 1h) IN NS {{name_server}} IN A {{zone_address}} {% for server1 in servers %} {{server1.hostname}} IN A {{server1.ip}} {% endfor %}
hosts
[dns_servers] 192.168.122.97
Home > CentOS > CentOS 7.x > DevOps > Automated Configuration > Ansible > Ansible Playbooks > CentOS 7.x automated setup of bind dns server