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 virtuelles02-cloud-init.tf- Configuration Cloud-Init pour l'initialisation automatique des VMsproviders.tf- Configuration des providers Terraformvariables.tf- Définition des variablesterraform.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 Proxmoxproxmox_api_token: Token d'API Proxmoxtailscale_auth_key: Clé d'authentification Tailscalevirtual_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
- Ajouter la configuration dans
terraform.tfvars - Exécuter
terraform apply
Supprimer une VM
- Retirer la configuration de
terraform.tfvars - Exécuter
terraform apply
Modifier une VM
- Modifier la configuration dans
terraform.tfvars - Exécuter
terraform planpour voir les changements - 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