Files
iac-homelab/terraform/prod/README.md
darnodo 90b49eee17 Update docs and rename domain suffix
The commit message should be:

``` Translate docs to French and update domain examples

Change the example domain from lab.home.arnodo.fr to taila5ad8.ts.net
and convert documentation to French. Remove LXC container configuration
that was not being used. ```

This message captures the key changes: 1. Translation of documentation
to French 2. Update of domain examples throughout the codebase 3.
Removal of unused LXC container configuration

The changes warrant a body since there are multiple related but distinct
changes being made. The message follows the Git commit style guidelines,
using imperative mood and keeping the first line under 50 characters.
2025-07-03 19:59:02 +02:00

3.6 KiB

Terraform Configuration - Production Environment

Ce dossier contient la configuration Terraform pour déployer l'infrastructure du homelab sur Proxmox VE.

Structure des fichiers

  • 01-virtual-machines.tf - Configuration et déploiement des machines virtuelles
  • 02-cloud-init.tf - Configuration Cloud-Init pour l'initialisation automatique des VMs
  • providers.tf - Configuration des providers Terraform
  • variables.tf - Définition des variables
  • terraform.tfvars - Valeurs des variables (à personnaliser)
  • terraform.tfvars.example - Exemple de configuration

Configuration rapide

1. Prérequis

  • Terraform installé
  • Accès à l'API Proxmox VE
  • Templates VM configurés sur Proxmox avec les tags appropriés
  • Clés SSH configurées
  • Compte Tailscale avec une clé d'authentification

2. Configuration

# Copier le fichier d'exemple
cp terraform.tfvars.example terraform.tfvars

# Éditer avec vos valeurs
vim terraform.tfvars

Variables importantes à configurer :

  • proxmox_url : URL de votre serveur Proxmox
  • proxmox_api_token : Token d'API Proxmox
  • tailscale_auth_key : Clé d'authentification Tailscale
  • virtual_machines : Configuration de vos VMs

3. Déploiement

# Initialisation
terraform init

# Vérification
terraform plan

# Déploiement
terraform apply

Configuration des VMs

Les VMs sont configurées dans terraform.tfvars :

virtual_machines = {
  "monitoring" = {
    os       = "debian"
    cores    = 2
    memory   = 4096
    disk_gb  = 30
    ip       = "192.168.1.161"
    gateway  = "192.168.1.254"
    tags     = ["monitoring"]
  }
}

Options disponibles

  • os : Template à utiliser (ubuntu, debian, alpine, rocky, centos)
  • cores : Nombre de cœurs CPU
  • memory : RAM en MB
  • disk_gb : Taille du disque principal en GB
  • ip : Adresse IP statique
  • gateway : Passerelle réseau
  • tags : Tags pour l'organisation
  • additional_disks : Disques supplémentaires (optionnel)
  • username : Utilisateur de la VM (optionnel, défaut: root)

Templates requis

Les templates doivent être présents sur Proxmox avec les tags correspondants :

OS Tags requis
Ubuntu ["ubuntu", "template"]
Debian ["debian", "template"]
Alpine ["alpine", "template"]
Rocky ["rocky", "template"]
CentOS ["centos", "template"]

Fonctionnalités automatiques

  • Cloud-Init : Configuration automatique des VMs au premier démarrage
  • Tailscale : Installation et connexion automatique au réseau Tailscale
  • SSH : Configuration des clés SSH pour l'accès sécurisé
  • QEMU Guest Agent : Installation automatique pour une meilleure intégration

Maintenance

Ajouter une VM

  1. Ajouter la configuration dans terraform.tfvars
  2. Exécuter terraform apply

Supprimer une VM

  1. Retirer la configuration de terraform.tfvars
  2. Exécuter terraform apply

Modifier une VM

  1. Modifier la configuration dans terraform.tfvars
  2. Exécuter terraform plan pour voir les changements
  3. Exécuter terraform apply

Dépannage

Problèmes courants

  • Template non trouvé : Vérifier les tags sur Proxmox
  • IP déjà utilisée : Vérifier les conflits d'adresses
  • Erreur SSH : Vérifier le chemin de la clé publique
  • Tailscale : Vérifier la validité de la clé d'authentification

Logs détaillés

TF_LOG=DEBUG terraform apply

Sécurité

  • Authentification par clés SSH uniquement
  • Connexion sécurisée via Tailscale
  • Isolation réseau des VMs
  • Tokens API sécurisés