terraform init

Objectif

Initialise un répertoire de travail Terraform en :

  • Téléchargeant les providers nécessaires
  • Initialisant le backend pour stocker l’état
  • Installant les modules requis

Utilisation

# Initialisation basique
terraform init
 
# Forcer le téléchargement des providers
terraform init -upgrade
 
# Spécifier un backend différent
terraform init -backend-config="path=path/to/state"

Quand l’utiliser

  • Lors de la première utilisation d’une configuration
  • Après l’ajout de nouveaux providers ou modules
  • Après un changement de backend
  • En cas de corruption du répertoire .terraform

terraform plan

Objectif

Crée un plan d’exécution détaillant :

  • Les ressources à créer
  • Les ressources à modifier
  • Les ressources à supprimer
  • Les dépendances entre les changements

Utilisation

# Plan standard
terraform plan
 
# Sauvegarder le plan dans un fichier
terraform plan -out=plan.tfplan
 
# Plan ciblé sur une ressource spécifique
terraform plan -target=resource.name

Quand l’utiliser

  • Avant chaque apply pour vérifier les changements
  • Pour documenter les modifications prévues
  • Pour détecter des problèmes potentiels
  • Pour estimer l’impact des changements

terraform apply

Objectif

Applique les changements pour atteindre l’état désiré en :

  • Créant les nouvelles ressources
  • Modifiant les ressources existantes
  • Supprimant les ressources obsolètes
  • Mettant à jour l’état Terraform

Utilisation

# Apply interactif
terraform apply
 
# Apply automatique (sans confirmation)
terraform apply -auto-approve
 
# Apply d'un plan sauvegardé
terraform apply plan.tfplan

Quand l’utiliser

  • Pour déployer une nouvelle infrastructure
  • Pour modifier une infrastructure existante
  • Après validation d’un plan
  • Pour corriger des divergences d’état

terraform destroy

Objectif

Supprime toutes les ressources gérées par Terraform en :

  • Détruisant les ressources dans l’ordre correct
  • Nettoyant l’état Terraform
  • Libérant les ressources associées

Utilisation

# Destroy interactif
terraform destroy
 
# Destroy automatique (sans confirmation)
terraform destroy -auto-approve
 
# Destroy ciblé sur une ressource
terraform destroy -target=resource.name

Quand l’utiliser

  • Pour nettoyer un environnement de test
  • Pour supprimer une infrastructure complète
  • Pour redéployer depuis zéro
  • Pour libérer des ressources coûteuses

Bonnes pratiques

  1. Sécurité

    • Toujours examiner le plan avant apply
    • Sauvegarder l’état avant les opérations majeures
    • Utiliser des backends sécurisés pour l’état
    • Limiter l’accès aux credentials
  2. Workflow

    • init → plan → apply
    • Versionner les configurations
    • Utiliser des workspaces pour isoler les environnements
    • Documenter les changements majeurs
  3. Automatisation

    • Intégrer dans des pipelines CI/CD
    • Automatiser les tests
    • Maintenir des sauvegardes
    • Utiliser des variables d’environnement
  4. Maintenance

    • Nettoyer régulièrement les anciens états
    • Mettre à jour les providers
    • Vérifier les dépendances
    • Surveiller les coûts

terraform