marcinpraczko.named
Informations rapides
Ce rôle est un fork du dépôt suivant :
Raisons de la création de ce fork et de ses adaptations :
Named
est toujours utilisé et il serait bon d'avoir un rôle fonctionnel.- Le rôle a une belle structure et est flexible en termes de configuration.
- Ce rôle ne fonctionnait pas directement et certains problèmes n'ont pas été traités depuis 2015.
Ansible-role-named
Version : 0.1.4
- Nécessite Ansible 2.0+
- Compatible avec la plupart des versions de RHEL/CentOS 6.x, 7.x, Debian et Ubuntu
Installation
Directement depuis ansible-galaxy (dernière version)
$ ansible-galaxy install marcinpraczko.named
Directement depuis le dépôt GitHub
Parfois, des modifications ont été appliquées à la branche develop
ou feature
et ne sont pas encore publiées.
Ansible-galaxy permet d'installer des rôles directement depuis GitHub
.
mkdir testing-roles
cd testing-roles
ansible-galaxy install -p roles git+https://github.com/marcinpraczko/ansible-role-named.git,develop
L'exemple ci-dessus installera la branche develop
. Cela peut être ajusté à n'importe quel commit Git SHA, tag ou nom de branche - selon les besoins.
Pour vérifier quelle version est installée, vous pouvez utiliser la commande :
ansible-galaxy list -p roles
Pour commencer
Installer BIND (named)
L'installation de BIND (named)
et de toutes les dépendances requises est très simple et peut se faire avant la configuration ou individuellement :
Installez seulement
$ ansible-playbook -t install -i hosts named.yml
Exécuter le Playbook complet
$ ansible-playbook -i hosts named.yml
Exemple de Playbook, d'Hôtes et de Variables de Groupe
Exemple de Playbook
- name: "Actions nécessaires pour mettre les maîtres dans un état heureux"
hosts: named_masters
remote_user: root
roles:
- "marcinpraczko.named"
- name: "Actions nécessaires pour mettre les esclaves dans un état heureux"
hosts: named_slaves
remote_user: root
roles:
- "marcinpraczko.named"
Exemple d'Hôtes
[named_masters]
127.0.0.1
#[named_slaves]
#127.0.0.1
Exemple de Variables de Groupe
named_masters :
named_acls:
public_slaves:
- 8.8.8.8
- 9.9.9.9
private_slaves:
- 192.168.25.5
- 192.168.25.6
named_zones:
# Remarquez le _ ici, cela rend ansible heureux et est remplacé plus tard dans la configuration
# et les zones automatiquement
foo_com:
type: master
allow_transfer:
- public_slaves
ttl: 3000
named_slaves :
named_zones_create_masters: False
named_zones:
# Remarquez le _ ici, cela rend ansible heureux et est remplacé plus tard dans la configuration
# et les zones automatiquement
foo_com:
type: slave
master:
- 7.7.7.7
Ce rôle se compose de tâches d'installation et de configuration, qui sont taguées soit
install
soit configure
et peuvent être exécutées individuellement ou ensemble. Ce rôle a des actions
pour créer un fichier named.conf
et un fichier included.conf
qui contiendra des ACL et des inclusions de zone,
et des fichiers de zone dynamiques basés sur des variables par défaut ou de groupe.
Configurables
Il y a pas mal de paramètres configurables dans ce rôle, voici une liste résumée des valeurs par défaut
(une liste à jour peut être trouvée dans defaults/main.yml
) :
## Options d'installation
named_conf_file_location: /etc/named.conf
# Assurez-vous que ceux-ci sont corrects pour votre système d'exploitation
named_user: named
named_group: named
named_service_name: named
# Paramètres spécifiques à Monit
named_monit_enable: False
named_monit_service_name: monit
named_monit_conf_directory: /etc/monit.d
named_pid_file: /var/run/named/named.pid
named_service_file: /etc/init.d/named
## Options de configuration de base
# Section des options
named_conf_listen_on_port: 53
named_conf_listen_on_interface:
- 127.0.0.1
named_conf_listen_on_v6_port: 53
named_conf_listen_on_v6_interface:
- ::1
named_conf_notify: "no"
named_conf_forwarders:
- 7.7.7.7
- 7.7.8.8
named_conf_directory: /var/named
named_conf_dump_file: /var/named/data/cache_dump.db
named_conf_statistics_file: /var/named/data/named_stats.txt
named_conf_memstatistics_file: /var/named/data/named_mem_stats.txt
named_conf_allow_query:
- any
#named_conf_allow_transfer: none
named_conf_recursion: no
named_conf_dnssec_enable: yes
named_conf_dnssec_validation: yes
named_conf_dnssec_lookaside: auto
named_conf_bindkeys_file: /etc/named.iscdlv.key
named_conf_managed_keys_directory: /var/named/dynamic
# Section de journalisation
named_conf_logging_channel: default_debug
named_conf_logging_file_directory: /var/log/named
named_conf_logging_file: named.log
named_conf_logging_severity: info
named_conf_logging_print_severity: yes
named_conf_logging_print_time: yes
named_conf_logging_print_category: yes
named_conf_logging_category_name: default
named_conf_logging_categories:
- default_debug
named_conf_includes_directory: /etc/named
### Pas de ACL par défaut ou d'inclusions
## Paramètres Maître
# Cette configuration détermine si les fichiers de zone doivent être créés dans le répertoire déclaré
# Normalement, vous ne voudriez pas créer cela si vous configurez un hôte esclave.
named_zones_create_masters: True
### Valeurs par défaut de configuration de zone
named_conf_zone_ttl: 21600
named_conf_zone_soa: foo.com. noc.foo.com.
named_conf_zone_refresh: 21600
named_conf_zone_retry: 600
named_conf_zone_expire: 86400
named_conf_zone_expire_min: 3000
Remarquez que vous pouvez spécifier des variables par défaut pour la création de fichiers de zone dynamiques, ce qui peut permettre de réduire considérablement les fichiers group_var
car vous pouvez seulement spécifier les surcharges pour les zones nécessitant des paramètres en dehors des valeurs par défaut.
Faits
Les faits suivants sont accessibles dans votre inventaire ou en dehors de ce rôle.
{{ ansible_local.named.interfaces_ipv4 }}
{{ ansible_local.named.interfaces_ipv6 }}
{{ ansible_local.named.port_ipv4 }}
{{ ansible_local.named.port_ipv6 }}
Tests
- À l'origine, le rôle n'avait qu'un fichier
travis
. - Ajout de la configuration
molecule
pour permettre de tester ce rôle localement.
Molecule
permet de tester les rôles ansible localement en utilisant docker
ou vagrant
.
Cela aide également à exécuter des validations comme serverspec
ou testinfra
.
Tout cela facilite beaucoup le test de ce rôle.
Installer les paquets requis
- Docker
- Vagrant
Installer molecule
- Installez un environnement virtuel Python sur votre système.
- Installez
molecule
dans l'environnement virtuel Python.
virtualenv venv
source venv/bin/activate
# Mettez à jour les paquets pip courants
pip install -U pip setuptools wheel
# Installez molecule avec les paquets Python requis
pip install -r tests/requirements.txt
Tester avec molecule
La commande suivante doit permettre de tester le rôle avec le driver Vagrant.
REMARQUE : L'exécution de cette commande pour la première fois prend plus de temps (l'image Vagrant complète doit être téléchargée sur l'hôte local).
molecule test --sudo
La commande ci-dessus exécutera --sudo
uniquement pour les outils de vérification, par exemple
testinfra
ou serverspec
, etc. Cette option --sudo
n'a pas d'effet
sur le fonctionnement d'ansible.
ansible-galaxy install marcinpraczko.named