znerol.authns
Nom du rôle
Serveur de noms autoritatif BIND
Exigences
Aucune.
Variables du rôle
Ce rôle contient plusieurs fichiers de tâches
. Le fichier de tâches principal
n'importe que certains d'entre eux :
- bind-install.yml : Installe les paquets nécessaires sur le système.
- bind-config.yml : Prépare une configuration minimale pour un serveur DNS autoritatif non récursif.
- bind-service.yml : Configure le service BIND.
Les fichiers de tâches suivants contiennent des étapes pour configurer des zones / enregistrements de ressources et des clés de mise à jour DDNS.
- zone.yml : Configure des zones DNS avec des enregistrements SOA et NS et un ensemble initial d'enregistrements de ressources (rr).
- key.yml : Configure une clé pour les mises à jour DNS dynamiques.
Variables pour bind-install.yml
Aucune.
Variables pour bind-config.yml
Les variables dans cette section devraient, dans la plupart des cas, rester à leurs valeurs par défaut.
authns_main_config_owner: root
authns_main_config_group: root
authns_main_config_mode: 0644
authns_main_config_selevel: # omis par défaut
authns_main_config_serole: # omis par défaut
authns_main_config_setype: # omis par défaut
authns_main_config_seuser: # omis par défaut
authns_local_config_file: "{{ authns_bind_etc_path }}/named.conf.local"
authns_local_config_owner: root
authns_local_config_group: root
authns_local_config_mode: 0644
authns_local_config_selevel: # omis par défaut
authns_local_config_serole: # omis par défaut
authns_local_config_setype: # omis par défaut
authns_local_config_seuser: # omis par défaut
authns_options_config_file: "{{ authns_bind_etc_path }}/named.conf.options"
authns_options_config_owner: root
authns_options_config_group: root
authns_options_config_mode: 0644
authns_options_config_selevel: # omis par défaut
authns_options_config_serole: # omis par défaut
authns_options_config_setype: # omis par défaut
authns_options_config_seuser: # omis par défaut
Variables pour bind-service.yml
Aucune.
Variables pour zone.yml
Les variables suivantes sont requis lors de l'importation du fichier de tâches zone
:
- L'une des variables
authns_zone_rr_content
ouauthns_zone_rr_src
doit être définie. Utilisez la première pour fournir directement le contenu d'un fichier de zone et la seconde pour spécifier un fichier contenant les enregistrements. Ces variables sont référencées dans un appel au module copy, les documents s'appliquent donc également ici. Remarque : Il est tout à fait valide de définirauthns_zone_rr_content
sur une chaîne vide.
Lors de la configuration d'une nouvelle zone, les variables suivantes sont optionnelles :
authns_zone_name
: Le nom de domaine de la zone. Par défaut, il correspond au domaine du nom d'hôte d'inventaire.authns_zone_allow_update
: Une liste de règles ACL définissant quelle combinaison d'IP/clé est autorisée à mettre à jour la zone dynamiquement. Utilisez la variable prédéfinie{{ authns_acl_require_localnets_and_update_key }}
pour la règle ACL légèrement déroutante qui permet aux mises à jour dynamiques de réussir uniquement si la demande de MISE À JOUR provient d'une adresse dans les réseaux locaux et si elle est signée à l'aide de la clé de la variableauthns_update_key_name
. Voir Contrôle d'accès basé sur TSIG dans le Manuel de référence de l'administrateur Bind9.authns_zone_db_ns
: Utilisé pour l'enregistrementNS
dans la zone, par défaut, cela correspond au nom d'hôte d'inventaire.authns_zone_db_ns_ip4
etauthns_zone_db_ns_ip6
: Utilisés pour les enregistrementsA
etAAAA
pour le serveur de noms de la zone. Par défaut, cela correspond à l'IP du nom d'hôte d'inventaire si son domaine correspond àauthns_zone_name
.- Si
authns_zone_dnssec
est réglé surtrue
, un répertoire est créé avec le bon mode d'accès et la configuration DNSSEC est ajoutée à la configuration de la zone. Notez que cela ne génère pas de clés DNSSEC.
Les autres variables de cette section devraient rester à leurs valeurs par défaut dans la plupart des cas.
authns_zone_name: "{{ inventory_hostname.split('.')[1:]|join('.') }}"
authns_zone_allow_update: []
authns_zone_dnssec: false
authns_zone_dnssec_key_dir: "{{ authns_bind_etc_path }}/dnssec.{{ authns_zone_name }}"
authns_zone_dnssec_key_owner: root
authns_zone_dnssec_key_group: "{{ authns_os_bind_group }}"
authns_zone_dnssec_key_mode: 0750
authns_zone_dnssec_key_selevel: # omis par défaut
authns_zone_dnssec_key_serole: # omis par défaut
authns_zone_dnssec_key_setype: # omis par défaut
authns_zone_dnssec_key_seuser: # omis par défaut
authns_zone_config_file: "{{ authns_bind_etc_path }}/zones.{{ authns_zone_name }}"
authns_zone_config_owner: root
authns_zone_config_group: root
authns_zone_config_mode: 0644
authns_zone_config_selevel: # omis par défaut
authns_zone_config_serole: # omis par défaut
authns_zone_config_setype: # omis par défaut
authns_zone_config_seuser: # omis par défaut
authns_zone_db_file: "{{ authns_bind_db_path }}/db.{{ authns_zone_name }}"
authns_zone_db_owner: root
authns_zone_db_group: root
authns_zone_db_mode: 0644
authns_zone_db_selevel: # omis par défaut
authns_zone_db_serole: # omis par défaut
authns_zone_db_setype: # omis par défaut
authns_zone_db_seuser: # omis par défaut
authns_zone_db_ns: "{{ inventory_hostname }}"
authns_zone_db_hostmaster: "hostmaster.{{ authns_zone_name }}"
authns_zone_db_serial: 1
authns_zone_db_ttl: 21600
authns_zone_db_refresh: 1800
authns_zone_db_retry: 900
authns_zone_db_expire: 604800
authns_zone_db_minimum: 1200
authns_zone_db_ns_in_zone: "{{ authns_zone_db_ns == authns_zone_name or authns_zone_db_ns.endswith('.{:s}'.format(authns_zone_name)) | bool }}"
authns_zone_db_ns_ip4: "{{ ansible_default_ipv4['address'] | default('') }}"
authns_zone_db_ns_ip6: "{{ ansible_default_ipv6['address'] | default('') }}"
authns_zone_rr_file: "{{ authns_zone_db_file }}.rr"
authns_zone_rr_owner: root
authns_zone_rr_group: root
authns_zone_rr_mode: 0644
authns_zone_rr_selevel: # omis par défaut
authns_zone_rr_serole: # omis par défaut
authns_zone_rr_setype: # omis par défaut
authns_zone_rr_seuser: # omis par défaut
authns_zone_rr_checksum: # omis par défaut
authns_zone_rr_content: # omis par défaut
authns_zone_rr_decrypt: # omis par défaut
authns_zone_rr_follow: # omis par défaut
authns_zone_rr_force: # omis par défaut
authns_zone_rr_local_follow: # omis par défaut
authns_zone_rr_remote_src: # omis par défaut
authns_zone_rr_src: # omis par défaut
Variables pour key.yml
Les variables suivantes sont requis lors de l'importation du fichier de tâches key
:
- L'une des variables
authns_update_key_content
ouauthns_update_key_src
doit être définie. Utilisez la première pour fournir directement une clé de mise à jour DDNS et la seconde pour spécifier un fichier contenant la clé. Ces variables sont référencées dans un appel au module copy, les documents s'appliquent donc également ici. Utilisezddns-confgen -q -k {{ authns_update_key_name }}
pour générer une clé DDNS.
Lors de la configuration d'une nouvelle zone, les variables suivantes sont optionnelles :
authns_update_key_name
: Le nom de domaine de la zone. Par défaut, il est égal au nom d'hôte d'inventaire.
Les autres variables de cette section devraient rester à leurs valeurs par défaut dans la plupart des cas.
authns_update_key_name: "{{ inventory_hostname }}"
authns_update_key_file: "{{ authns_bind_etc_path }}/key.{{ authns_update_key_name }}"
authns_update_key_owner: root
authns_update_key_group: "{{ authns_os_bind_group }}"
authns_update_key_mode: 0640
authns_update_key_selevel: # omis par défaut
authns_update_key_serole: # omis par défaut
authns_update_key_setype: # omis par défaut
authns_update_key_seuser: # omis par défaut
authns_update_key_checksum: # omis par défaut
authns_update_key_content: # omis par défaut
authns_update_key_decrypt: # omis par défaut
authns_update_key_follow: # omis par défaut
authns_update_key_force: # omis par défaut
authns_update_key_local_follow: # omis par défaut
authns_update_key_remote_src: # omis par défaut
authns_update_key_src: # omis par défaut
Dépendances
Aucune.
Exemple de Playbook
- hosts: all
vars:
authns_zone_rr_content: |
_test 1D IN TXT "test rr"
authns_update_key_content: |
key "{{ inventory_hostname }}" {
algorithm hmac-sha256;
secret "{{ my_secret_update_key_variable }}";
};
tasks:
- import_role:
name: znerol.authns
- import_role:
name: znerol.authns
tasks_from: zone
- import_role:
name: znerol.authns
tasks_from: key
- import_role:
name: znerol.authns
tasks_from: utilities
Licence
BSD
ansible-galaxy install znerol.authns