ansible: Add example
This commit is contained in:
43
ansible/inventory/00_static_hosts.yml.example
Normal file
43
ansible/inventory/00_static_hosts.yml.example
Normal 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
|
||||||
130
ansible/inventory/group_vars/all/static_records.yml.example
Normal file
130
ansible/inventory/group_vars/all/static_records.yml.example
Normal 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"
|
||||||
79
ansible/inventory/host_vars/dns-server.example.yml.example
Normal file
79
ansible/inventory/host_vars/dns-server.example.yml.example
Normal 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
|
||||||
|
#
|
||||||
Reference in New Issue
Block a user