ansible: Add example

This commit is contained in:
darnodo
2025-06-09 13:45:01 +02:00
parent 6a00eb2708
commit d71c98c20c
3 changed files with 252 additions and 0 deletions

View File

@@ -0,0 +1,43 @@
# ================================================================
# Static inventory for the core Homelab infrastructure
# These machines are configured manually and are not
# destroyed/recreated by Terraform.
# ================================================================
all:
children:
# -------------------------------------------
# Group for our DNS servers
# -------------------------------------------
dns_servers:
hosts:
dns.example.com:
ansible_host: 192.168.1.10
ansible_user: admin
# -------------------------------------------
# Group for our Proxmox hypervisors
# -------------------------------------------
proxmox_hosts:
hosts:
pve01.example.com:
ansible_host: 192.168.1.20
ansible_user: root
# -------------------------------------------
# Group for Lab machines (for lab DNS)
# -------------------------------------------
lab:
hosts:
pve01.example.com: {}
# ================================================================
# Best practice: add a variable for the Python interpreter
# to avoid ambiguities between python2 and python3.
# ================================================================
homelab_core:
children:
dns_servers:
proxmox_hosts:
vars:
ansible_python_interpreter: /usr/bin/python3

View File

@@ -0,0 +1,130 @@
---
# =================================================================
# Fichier d'exemple pour les enregistrements DNS statiques
#
# Copiez ce fichier vers `ansible/inventory/group_vars/all/static_records.yml`
# ou un fichier similaire (ex: `ansible/inventory/group_vars/VOTRE_GROUPE/dns_records.yml`)
# et adaptez les valeurs à votre environnement.
#
# Ce fichier est destiné à définir les enregistrements DNS pour les machines
# ou services ayant des adresses IP fixes, en particulier ceux qui ne
# sont pas gérés par des systèmes de provisioning dynamiques comme Terraform.
#
# La structure ci-dessous est un exemple. Vous devrez l'adapter
# à la manière dont vos playbooks Ansible attendent ces données
# (par exemple, pour configurer Dnsmasq, BIND, ou un service DNS cloud).
# =================================================================
# Exemple de structure pour les enregistrements DNS d'un domaine spécifique (ex: yourdomain.local)
# Remplacez "yourdomain_local_records" par une clé plus descriptive si nécessaire,
# par exemple "dns_records_lan" ou "dns_records_dmz".
# La structure de chaque enregistrement (ip, names) est un exemple.
# Vos playbooks peuvent attendre une structure différente.
# dns_records_yourdomain_local:
# # --- Infrastructure et serveurs critiques ---
# - ip: "192.168.1.1"
# names:
# - "router.yourdomain.local"
# - "gateway.yourdomain.local"
# - "firewall.yourdomain.local"
# # Vous pourriez ajouter d'autres attributs, ex: type: "A", ttl: 3600
#
# - ip: "192.168.1.10"
# names:
# - "dns-primary.yourdomain.local" # Nom FQDN du serveur DNS lui-même
# - "dns1.yourdomain.local"
# - "ns1.yourdomain.local"
#
# - ip: "192.168.1.11" # Un serveur DNS secondaire, par exemple
# names:
# - "dns-secondary.yourdomain.local"
# - "dns2.yourdomain.local"
# - "ns2.yourdomain.local"
#
# - ip: "192.168.1.20"
# names:
# - "hypervisor01.yourdomain.local"
# - "pve01.yourdomain.local" # Si c'est un Proxmox
#
# - ip: "192.168.1.50"
# names:
# - "nas.yourdomain.local"
# - "storage.yourdomain.local"
#
# # --- Périphériques réseau (imprimantes, caméras, etc.) ---
# - ip: "192.168.1.100"
# names:
# - "printer-color.yourdomain.local"
# - "printer01.yourdomain.local"
#
# - ip: "192.168.1.101"
# names:
# - "camera-garage.yourdomain.local"
#
# # --- Services hébergés ---
# - ip: "192.168.1.150" # Peut-être une VM ou un conteneur
# names:
# - "webserver.yourdomain.local"
# - "wiki.yourdomain.local" # Si le même serveur héberge plusieurs services
#
# # --- Enregistrements CNAME (Alias) ---
# # La structure pour les CNAMEs peut varier. Voici un exemple :
# # - name: "www.yourdomain.local"
# # cname_target: "webserver.yourdomain.local"
# # type: "CNAME"
#
# # --- Enregistrements MX (Mail Exchange) ---
# # Si vous hébergez votre propre serveur de messagerie :
# # - name: "yourdomain.local" # Le domaine pour lequel le MX est défini
# # mail_server: "mail.yourdomain.local" # FQDN du serveur de messagerie
# # priority: 10 # Priorité MX (valeur plus basse = plus prioritaire)
# # type: "MX"
# #
# # - ip: "192.168.1.60" # IP du serveur de messagerie
# # names:
# # - "mail.yourdomain.local"
# Vous pouvez avoir des listes séparées pour différents domaines ou zones
# si votre configuration DNS le requiert.
# Par exemple, pour un domaine "lab.yourdomain.local":
# dns_records_lab_yourdomain_local:
# - ip: "10.0.0.10"
# names:
# - "kube-master.lab.yourdomain.local"
# - ip: "10.0.0.100"
# names:
# - "gitlab.lab.yourdomain.local"
# IMPORTANT:
# La variable `dns_records_home` et `dns_records_lab` utilisée dans votre fichier original
# `static_records.yml` est une façon valide de structurer ces données.
# L'exemple ci-dessus est plus générique. Si vos playbooks sont déjà
# conçus pour utiliser `dns_records_home` et `dns_records_lab`,
# vous devriez structurer votre fichier `.example` pour correspondre à cela.
#
# Exemple reprenant votre structure originale :
dns_records_home: # Pour le domaine "home.votredomaine.fr"
- ip: "192.168.1.1" # Exemple: Votre routeur/passerelle
names:
- "router.home.votredomaine.fr"
- "gateway"
- ip: "192.168.1.10" # Exemple: Votre serveur DNS principal pour ce domaine
names:
- "dns.home.votredomaine.fr"
- "dns"
- ip: "192.168.1.20" # Exemple: Un NAS
names:
- "nas.home.votredomaine.fr"
- "nas"
dns_records_lab: # Pour un autre domaine, par exemple "lab.votredomaine.fr"
- ip: "192.168.100.10" # Exemple: Un hyperviseur dans le lab
names:
- "pve.lab.votredomaine.fr"
- "pve"
- ip: "192.168.100.20" # Exemple: Un serveur de build
names:
- "jenkins.lab.votredomaine.fr"
- "jenkins"

View File

@@ -0,0 +1,79 @@
---
# ===============================================================
# Fichier d'exemple pour les variables d'hôte d'un serveur DNS
#
# Copiez ce fichier vers `ansible/inventory/host_vars/VOTRE_SERVEUR_DNS.yml`
# (par exemple, `dns-primary.yourdomain.local.yml`) et adaptez les valeurs.
#
# Ces variables sont typiquement utilisées pour configurer un service
# comme Dnsmasq ou BIND sur un hôte spécifique.
# ===============================================================
# Le nom de domaine principal que ce serveur DNS va gérer localement.
# Remplacez "yourdomain.local" par votre propre nom de domaine.
dnsmasq_domain_name: "yourdomain.local"
# Taille du cache DNS pour dnsmasq.
# Une valeur plus élevée (ex: 1000) peut améliorer les performances sur
# les réseaux avec de nombreux appareils ou des requêtes répétées.
dnsmasq_cache_size: 500
# Liste des serveurs DNS en amont (upstream).
# Ce sont les serveurs auxquels votre DNS local transmettra les requêtes
# pour les domaines qu'il ne gère pas lui-même (par exemple, google.com).
# Remplacez ces adresses par celles de vos fournisseurs DNS préférés (ex: Cloudflare, Google, Quad9, ou votre FAI).
# Il est recommandé d'en utiliser au moins deux pour la redondance.
dnsmasq_upstream_servers:
- "1.1.1.1" # Exemple: Cloudflare
- "8.8.8.8" # Exemple: Google
# - "9.9.9.9" # Exemple: Quad9
# Adresses IP sur lesquelles le service Dnsmasq doit écouter.
# "127.0.0.1" est pour les requêtes locales sur le serveur lui-même.
# "{{ ansible_default_ipv4.address }}" est une variable "fact" d'Ansible qui
# est automatiquement remplacée par l'adresse IPv4 principale de l'hôte.
# Cela rend la configuration portable si l'IP de votre serveur DNS change.
dnsmasq_listen_addresses:
- "127.0.0.1"
- "{{ ansible_default_ipv4.address }}" # Assurez-vous que l'hôte a bien une adresse IPv4 par défaut.
# Si vous avez plusieurs interfaces réseau et souhaitez écouter sur une IP spécifique,
# vous pouvez la mettre en dur ici, par exemple :
# - "192.168.1.10"
# ----------------------------------------------------------------
# Section DHCP - Optionnelle
#
# Décommentez et configurez cette section si vous souhaitez que
# ce serveur DNS agisse également comme serveur DHCP pour votre réseau.
# Assurez-vous qu'aucun autre serveur DHCP (comme celui de votre routeur)
# n'est actif sur le même segment réseau pour éviter les conflits.
# ----------------------------------------------------------------
dnsmasq_dhcp_enabled: false
# Exemple de configuration DHCP (si dnsmasq_dhcp_enabled est true):
#
# # Plage d'adresses IP à distribuer par le DHCP, et durée du bail.
# # Format: "IP_DEBUT,IP_FIN,DUREE_BAIL" (ex: "192.168.1.100,192.168.1.199,12h")
# dnsmasq_dhcp_range: "192.168.1.150,192.168.1.250,24h"
#
# # Adresse IP de la passerelle (routeur) à fournir aux clients DHCP.
# dnsmasq_dhcp_router: "192.168.1.1"
#
# # Options DHCP supplémentaires (exemple : serveur NTP)
# # dnsmasq_dhcp_options:
# # - "option:ntp-server,192.168.1.10" # Si votre serveur DNS est aussi serveur NTP
# Autres variables spécifiques à votre configuration DNS pourraient être ajoutées ici.
# Par exemple, pour activer ou désactiver des fonctionnalités de dnsmasq:
# dnsmasq_no_hosts: false # Si true, dnsmasq n'utilisera pas /etc/hosts
# dnsmasq_expand_hosts: true # Si true, ajoute le domaine aux noms simples dans /etc/hosts
# Si vous utilisez des listes de blocage (blocklists) pour le filtrage DNS:
# dnsmasq_blocklist_urls:
# - "https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts"
# - "https://mirror1.malwaredomains.com/files/justdomains"
# Active la journalisation des requêtes DNS (utile pour le débogage)
# dnsmasq_log_queries: false
# dnsmasq_log_dhcp: false # Active la journalisation des événements DHCP
#