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.
140 lines
3.6 KiB
Markdown
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 |