# 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 ```bash # 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 ```bash # Initialisation terraform init # Vérification terraform plan # Déploiement terraform apply ``` ## Configuration des VMs Les VMs sont configurées dans `terraform.tfvars` : ```hcl 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 ```bash 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