lucab85.ansible_role_bind
Rôle Ansible : BIND
Installe et configure un service DNS BIND9 sur Fedora/Centos/RHEL7/8 et Debian/Ubuntu en tant qu'autoritaire pour un ou plusieurs domaines (maître et/ou esclave) avec des zones et des configurations inverses personnalisées.
Exigences
Aucune exigence spéciale ; notez que ce rôle nécessite un accès root, donc exécutez-le dans un playbook avec un become: yes
global, ou invoquez le rôle dans votre playbook comme suit :
- hosts: dns
roles:
- role: lucab85.ansible_role_bind
become: yes
Variables du rôle
Les variables disponibles sont répertoriées avec les valeurs par défaut dans le fichier defaults/main.yml.
Configuration principale
Tous les réglages dans bind_main_config_settings
sont appliqués dans le fichier de configuration principal /etc/named.conf
pour Fedora/CentOS/RHEL ou /etc/bind/named.conf
pour Debian/Ubuntu (selon la plateforme). Tous les réglages dans bind_main_options_settings
sont appliqués dans le fichier de configuration principal à l'intérieur de la balise options { }
. Exemple :
bind_main_options_settings:
- option: listen-on port
value: '53 { 127.0.0.1; 10.0.1.1; };'
- option: allow-query
value: '{ trusted; };'
- option: forwarders
value: '{ 8.8.8.8; 8.8.4.4; };'
- option: listen-on-v6
value: '{ any; };'
- option: dnssec-validation
value: 'auto;'
Veuillez noter dans cet exemple 10.0.1.1 est l'IPv4 de la machine cible, adaptez-le selon vos besoins.
bind_main_config_settings:
- option: acl "trusted"
value: '{ 10.0.1.1; 10.0.1.2; };'
Dans cet exemple, j'ai défini un acl trusted avec deux adresses IPv4 que nous pourrions utiliser pour notre politique (voir plus loin), adaptez-le selon vos besoins.
Exemple de sortie :
#
# Géré par Ansible : Ne pas modifier ce fichier manuellement !
#
options {
directory "/var/named";
listen-on port 53 { 127.0.0.1; 10.0.1.1; };
allow-query { trusted; };
forwarders { 8.8.8.8; 8.8.4.4; };
listen-on-v6 { any; };
dnssec-validation auto;
};
acl "trusted" { 10.0.1.1; 10.0.1.2; };
include "/etc/named/named.conf.local";
Configuration des zones
Les réglages des zones sont définis dans bind_zones_entries
et appliqués par le modèle de définition des zones zone.j2
. Les réglages de zone sont définis dans le fichier de configuration auxiliaire /etc/named/named.conf.local
pour Fedora/CentOS/RHEL et Debian/Ubuntu (selon la plateforme). Les enregistrements de zone sont stockés dans /var/named/[[ example.com.zone ]]
pour Fedora/CentOS/RHEL ou /var/lib/bind/[[ example.com.zone ]]
pour Debian/Ubuntu (selon la plateforme).
Exemple :
bind_zones_entries:
- name: "example.com"
file: "example.com.zone"
type: "master"
options: "allow-update { none; };"
ttl: 86400
records:
- name: "@"
type: "SOA"
value: "dns1.example.com. hostmaster.example.com. (2001062501 21600 3600 604800 86400)"
- name: "@"
type: "NS"
value: "dns1.example.com."
- name: "@"
type: "NS"
value: "dns2.example.com."
- name: "dns1"
type: "A"
value: "10.0.1.1"
- name: "dns2"
[...]
Exemple de sortie locale : /etc/named/named.conf.local
#
# Géré par Ansible : Ne pas modifier ce fichier manuellement !
#
zone "example.com" IN {
type master;
file "example.com.zone";
allow-update { none; };
};
zone "1.0.10.in-addr.arpa" IN {
type master;
file "example.com.rr.zone";
allow-update { none; };
};
Exemple de sortie : /var/named/example.com.zone
$ORIGIN example.com.
$TTL 86400;
@ IN SOA dns1.example.com. hostmaster.example.com. (2001062501 21600 3600 604800 86400)
@ IN NS dns1.example.com.
@ IN NS dns2.example.com.
dns1 IN A 10.0.1.1
dns2 IN A 10.0.1.2
@ IN MX 10 mail1.example.com.
@ IN MX 20 mail2.example.com.
mail1 IN A 10.0.1.5
mail2 IN A 10.0.1.6
services IN A 10.0.1.10
services IN A 10.0.1.11
ftp IN CNAME services.example.com.
www IN CNAME services.example.com.
Configuration de la zone inverse
De la même manière que pour la "configuration de zone", vous pouvez également configurer une zone inverse.
Exemple :
- name: "1.0.10.in-addr.arpa"
file: "example.com.rr.zone"
type: "master"
options: "allow-update { none; };"
ttl: 86400
records:
- name: "@"
type: "SOA"
value: "dns1.example.com. hostmaster.example.com. (2001062501 21600 3600 604800 86400)"
- name: "@"
type: "NS"
value: "dns1.example.com."
- name: "@"
type: "NS"
value: "dns2.example.com."
- name: "1"
type: "PTR"
value: "dns1.example.com."
[...]
Exemple de sortie : /var/named/example.com.rr.zone
$ORIGIN 1.0.10.in-addr.arpa.
$TTL 86400;
@ IN SOA dns1.example.com. hostmaster.example.com. (2001062501 21600 3600 604800 86400)
@ IN NS dns1.example.com.
@ IN NS dns2.example.com.
@ IN NS dns1.example.com.
1 IN PTR dns1.example.com.
2 IN PTR dns2.example.com.
5 IN PTR mail1.example.com.
6 IN PTR mail2.example.com.
10 IN PTR services.example.com.
11 IN PTR services.example.com.
Consultez la documentation BIND pour la définition spécifique des enregistrements.
Dépendances
Aucune.
Exemple de Playbook
- hosts: dns
become: yes
vars_files:
- vars/main.yml
roles:
- lucab85.ansible_role_bind
Personnalisez les variables dans vars/main.yml
:
bind_zones_entries:
- name: "example.com"
file: "example.com.zone"
type: "master"
options: "allow-update { none; };"
ttl: 86400
records:
- name: "@"
type: "SOA"
value: "dns1.example.com. hostmaster.example.com. (2001062501 21600 3600 604800 86400)"
- name: "@"
type: "NS"
value: "dns1.example.com."
- name: "@"
type: "NS"
value: "dns2.example.com."
- name: "dns1"
type: "A"
value: "10.0.1.1"
- name: "dns2"
[...]
Licence
MIT / BSD
Informations sur l'auteur
Ce rôle a été créé en 2021 par Luca Berton, auteur d'Ansible Pilot.
Ansible Pilot
Plus d'informations :
Faire un don
Merci de me soutenir :
Setup a BIND9 DNS service on Fedora/Centos/RHEL7/8 and Debian/Ubuntu target as authoritative for one or more domains (master and/or slave) with customized zone and reverse.
ansible-galaxy install lucab85.ansible_role_bind