Files
iac-homelab/terraform/prod/README.md
darnodo 531a05a173 docs: fix markdown table alignment in prod README
Reformat the Proxmox template requirements table in `terraform/prod/README.md` to improve readability and ensure consistent spacing between columns. This purely aesthetic change aligns the headers and cell contents properly.
2025-12-07 13:32:03 +01: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