first commit
This commit is contained in:
38
ansible/ansible.cfg
Normal file
38
ansible/ansible.cfg
Normal file
@@ -0,0 +1,38 @@
|
||||
# ================================================================
|
||||
# Fichier de configuration principal pour Ansible
|
||||
#
|
||||
# Ces paramètres s'appliqueront par défaut lorsque vous lancerez
|
||||
# des commandes Ansible depuis le dossier 'ansible/' ou sa racine.
|
||||
# ================================================================
|
||||
|
||||
[defaults]
|
||||
|
||||
# Chemin vers le dossier contenant vos fichiers d'inventaire.
|
||||
# C'est la directive la plus importante ! Ansible lira automatiquement
|
||||
# tous les fichiers valides dans ce dossier (statiques et dynamiques).
|
||||
inventory = ./inventory/
|
||||
|
||||
# Chemin vers le dossier contenant vos rôles.
|
||||
roles_path = ./roles/
|
||||
|
||||
# Désactive la vérification des clés d'hôte SSH.
|
||||
# Très UTILE en lab où les VMs sont souvent recréées avec de nouvelles clés SSH.
|
||||
# ATTENTION : C'est moins sécurisé. À ne pas utiliser dans un environnement
|
||||
# de production non contrôlé. Pour notre lab, c'est acceptable.
|
||||
host_key_checking = False
|
||||
|
||||
# N'affiche pas les tâches qui sont sautées (skipped) dans la console.
|
||||
# Cela rend la sortie de la commande un peu plus propre et lisible.
|
||||
display_skipped_hosts = False
|
||||
|
||||
# Force l'utilisation de couleurs dans la sortie de la console pour une meilleure lisibilité.
|
||||
force_color = 1
|
||||
|
||||
|
||||
[privilege_escalation]
|
||||
|
||||
# Ne jamais demander le mot de passe pour l'escalade de privilèges (sudo).
|
||||
# Cela suppose que vous avez configuré un accès sudo sans mot de passe
|
||||
# pour votre utilisateur Ansible (une pratique courante pour l'automatisation).
|
||||
# Si ce n'est pas le cas, Ansible resterait bloqué à attendre un mot de passe.
|
||||
become_ask_pass = False
|
||||
14
ansible/playbooks/setup_dns_server.yml
Normal file
14
ansible/playbooks/setup_dns_server.yml
Normal file
@@ -0,0 +1,14 @@
|
||||
---
|
||||
# ================================================================
|
||||
# Playbook d'Installation Initiale du Serveur DNS
|
||||
#
|
||||
# À lancer une seule fois pour provisionner un nouveau serveur.
|
||||
# Il installe Dnsmasq et déploie la configuration complète.
|
||||
# USAGE : ansible-playbook -i inventory/ playbooks/setup_dns_server.yml
|
||||
# ================================================================
|
||||
|
||||
- name: "Provisionner et configurer le serveur DNS"
|
||||
hosts: dns_servers
|
||||
become: true
|
||||
roles:
|
||||
- role: dns_server
|
||||
15
ansible/playbooks/update_dns_records.yml
Normal file
15
ansible/playbooks/update_dns_records.yml
Normal file
@@ -0,0 +1,15 @@
|
||||
---
|
||||
# ================================================================
|
||||
# Playbook de Mise à Jour des Enregistrements DNS
|
||||
#
|
||||
# C'est le playbook à lancer après un `terraform apply` ou
|
||||
# une modification des variables DNS.
|
||||
# Il garantit que la configuration est à jour.
|
||||
# USAGE : ansible-playbook -i inventory/ playbooks/update_dns_records.yml
|
||||
# ================================================================
|
||||
|
||||
- name: "Synchroniser les enregistrements DNS"
|
||||
hosts: dns_servers
|
||||
become: true
|
||||
roles:
|
||||
- role: dns_server
|
||||
12
ansible/roles/dns_server/handlers/main.yml
Normal file
12
ansible/roles/dns_server/handlers/main.yml
Normal file
@@ -0,0 +1,12 @@
|
||||
---
|
||||
# ================================================================
|
||||
# Handlers pour le rôle dns_server
|
||||
#
|
||||
# Ces tâches ne sont exécutées que si elles sont "notifiées"
|
||||
# par une autre tâche qui a effectué un changement.
|
||||
# ================================================================
|
||||
|
||||
- name: Restart dnsmasq
|
||||
ansible.builtin.service:
|
||||
name: dnsmasq
|
||||
state: restarted
|
||||
55
ansible/roles/dns_server/tasks/main.yml
Normal file
55
ansible/roles/dns_server/tasks/main.yml
Normal file
@@ -0,0 +1,55 @@
|
||||
---
|
||||
# Tâches principales pour le rôle dns_server
|
||||
|
||||
- name: "[DNS] Installation du paquet Dnsmasq"
|
||||
tags: install
|
||||
ansible.builtin.apt:
|
||||
name: dnsmasq
|
||||
state: present
|
||||
update_cache: true
|
||||
|
||||
- name: "[DNS] Création du dossier pour les fichiers d'hôtes"
|
||||
tags: configure
|
||||
ansible.builtin.file:
|
||||
path: /etc/dnsmasq.hosts.d
|
||||
state: directory
|
||||
owner: root
|
||||
group: root
|
||||
mode: '0755'
|
||||
|
||||
- name: "[DNS] Création du fichier de configuration principal (dnsmasq.conf)"
|
||||
tags: configure
|
||||
ansible.builtin.template:
|
||||
src: dnsmasq.conf.j2
|
||||
dest: /etc/dnsmasq.conf
|
||||
owner: root
|
||||
group: root
|
||||
mode: '0644'
|
||||
notify: Restart dnsmasq
|
||||
|
||||
- name: "[DNS] Déploiement des enregistrements DNS statiques (home)"
|
||||
tags: configure
|
||||
ansible.builtin.template:
|
||||
src: records.home.j2
|
||||
dest: /etc/dnsmasq.hosts.d/records.home.arnodo.fr
|
||||
owner: root
|
||||
group: root
|
||||
mode: '0644'
|
||||
notify: Restart dnsmasq
|
||||
|
||||
- name: "[DNS] Déploiement des enregistrements DNS dynamiques (lab)"
|
||||
tags: configure
|
||||
ansible.builtin.template:
|
||||
src: records.lab.j2
|
||||
dest: /etc/dnsmasq.hosts.d/records.lab.arnodo.fr
|
||||
owner: root
|
||||
group: root
|
||||
mode: '0644'
|
||||
notify: Restart dnsmasq
|
||||
|
||||
- name: "[DNS] Vérification que le service Dnsmasq est actif et activé au démarrage"
|
||||
tags: service
|
||||
ansible.builtin.service:
|
||||
name: dnsmasq
|
||||
state: started
|
||||
enabled: true
|
||||
33
ansible/roles/dns_server/templates/dnsmasq.conf.j2
Normal file
33
ansible/roles/dns_server/templates/dnsmasq.conf.j2
Normal file
@@ -0,0 +1,33 @@
|
||||
# ================================================================
|
||||
# Fichier de configuration principal de Dnsmasq
|
||||
# CE FICHIER EST GÉRÉ PAR ANSIBLE - NE PAS MODIFIER MANUELLEMENT
|
||||
# ================================================================
|
||||
|
||||
# Ne jamais transmettre les requêtes pour le domaine local vers l'extérieur
|
||||
local=/{{ dnsmasq_domain_name }}/
|
||||
|
||||
# Définit le domaine de base pour les noms courts
|
||||
domain={{ dnsmasq_domain_name }}
|
||||
|
||||
# Active la fonctionnalité 'domain' ci-dessus pour les noms dans les fichiers d'hôtes
|
||||
expand-hosts
|
||||
|
||||
# Ne pas lire le fichier /etc/resolv.conf du système
|
||||
no-resolv
|
||||
|
||||
# Interfaces d'écoute
|
||||
{% for addr in dnsmasq_listen_addresses %}
|
||||
listen-address={{ addr }}
|
||||
{% endfor %}
|
||||
|
||||
# Serveurs DNS en amont (upstream)
|
||||
{% for server in dnsmasq_upstream_servers %}
|
||||
server={{ server }}
|
||||
{% endfor %}
|
||||
|
||||
# Taille du cache
|
||||
cache-size={{ dnsmasq_cache_size }}
|
||||
|
||||
# On indique explicitement où trouver nos listes d'hôtes additionnelles
|
||||
addn-hosts=/etc/dnsmasq.hosts.d/records.home.arnodo.fr
|
||||
addn-hosts=/etc/dnsmasq.hosts.d/records.lab.arnodo.fr
|
||||
8
ansible/roles/dns_server/templates/records.home.j2
Normal file
8
ansible/roles/dns_server/templates/records.home.j2
Normal file
@@ -0,0 +1,8 @@
|
||||
# ===================================================
|
||||
# Fichier des enregistrements DNS statiques (home)
|
||||
# GÉRÉ PAR ANSIBLE
|
||||
# Source: group_vars/all/static_records.yml
|
||||
# ===================================================
|
||||
{% for record in dns_records_home %}
|
||||
{{ record.ip }} {{ record.names | join(' ') }}
|
||||
{% endfor %}
|
||||
11
ansible/roles/dns_server/templates/records.lab.j2
Normal file
11
ansible/roles/dns_server/templates/records.lab.j2
Normal file
@@ -0,0 +1,11 @@
|
||||
# ===================================================
|
||||
# Fichier des enregistrements DNS dynamiques (lab)
|
||||
# GÉRÉ PAR ANSIBLE
|
||||
# Source: Inventaire généré par Terraform
|
||||
# ===================================================
|
||||
#
|
||||
# IP Address FQDN Short Name
|
||||
#
|
||||
{% for host in groups['lab'] | default([]) %}
|
||||
{{ hostvars[host].ansible_host }} {{ hostvars[host].inventory_hostname }} {{ hostvars[host].inventory_hostname_short }}
|
||||
{% endfor %}
|
||||
Reference in New Issue
Block a user