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

140 lines
3.6 KiB
Markdown

# 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