Aller au contenu
Infrastructure as Code medium
🔐 Alerte sécurité — Incident supply chain Trivy : lire mon analyse de l'attaque

Remote runs et modes d'exécution dans HCP Terraform

12 min de lecture

logo terraform

Un run dans HCP Terraform englobe le cycle complet d’exécution : téléversement du code, plan, approbation éventuelle, puis apply. Ce guide détaille les trois façons de déclencher un run, les speculative plans et les modes de planification disponibles.

  • Ce qu’est un run et les étapes de son cycle de vie
  • Les trois workflows d’exécution : CLI-driven, VCS-driven, API-driven
  • Comment fonctionnent les speculative plans sur les pull requests
  • Les modes de planification : normal, destroy, refresh-only
  • Comment suivre et gérer vos runs dans l’interface web

Chaque run passe par une séquence d’étapes. Voici le parcours minimal d’un run standard :

ÉtapeCe qui se passePeut échouer ?
PendingLe run est en file d’attenteNon
PlanTerraform calcule les changementsOui (erreur de config)
Policy checkLes politiques Sentinel/OPA sont évaluéesOui (violation)
ApplyLes changements sont appliqués à l’infrastructureOui (erreur provider)
AppliedLe state est mis à jour, le run est terminéNon

Si une étape échoue, le run s’arrête — aucun changement n’est appliqué à l’infrastructure.

En règle générale, les runs standard sont sérialisés par workspace : HCP Terraform traite les runs dans l’ordre où ils sont mis en file d’attente. Cette sérialisation évite les conflits de state.

Exception importante : les speculative plans et les saved plans ignorent cette file d’attente pendant leur phase de planification. Ils peuvent donc démarrer même si un autre run est déjà en cours, car ils ne modifient ni les ressources ni le state.

C’est le workflow que vous avez utilisé dans le guide précédent. Vous tapez terraform plan ou terraform apply depuis votre terminal, mais l’exécution se produit sur les VM d’HCP Terraform.

Comment ça fonctionne :

  1. Terraform CLI empaquète votre code et l’envoie à HCP Terraform
  2. La plateforme exécute le plan à distance
  3. Le résultat s’affiche dans votre terminal
  4. Vous confirmez l’apply depuis votre terminal (mode manual apply)
Fenêtre de terminal
# Le plan s'exécute à distance, le résultat s'affiche localement
terraform plan
# L'apply s'exécute à distance après votre confirmation
terraform apply

Quand l’utiliser : développement, itération rapide, apprentissage. C’est le workflow le plus intuitif car il ressemble à l’exécution locale classique.

VCS-driven : recommandé pour les environnements partagés

Section intitulée « VCS-driven : recommandé pour les environnements partagés »

Le workflow VCS-driven connecte un dépôt Git (GitHub, GitLab, Bitbucket, Azure DevOps) à un workspace. Chaque push ou merge déclenche automatiquement un run.

Comment ça fonctionne :

  1. Vous poussez du code sur la branche surveillée
  2. HCP Terraform détecte le changement et démarre un plan
  3. En mode manual apply, un membre de l’équipe valide dans l’interface web
  4. L’apply s’exécute

Le speculative plan sur les pull requests : quand vous ouvrez une PR, HCP Terraform exécute un plan en lecture seule — le speculative plan. Ce plan :

  • montre les changements prévus sans les appliquer,
  • ne bloque pas la file d’attente du workspace,
  • publie un check ou un lien vers le plan dans l’interface de la PR/MR.

Quand l’utiliser : production, environnements partagés, review d’infrastructure via PR.

Le workflow API-driven utilise l’API REST d’HCP Terraform pour déclencher des runs par programmation.

Comment ça fonctionne :

  1. Un script ou un pipeline CI/CD appelle l’API pour créer une configuration version (upload du code)
  2. L’API démarre un run
  3. Le script interroge l’API pour suivre le statut
  4. Le script confirme l’apply via l’API

Quand l’utiliser : pipelines CI/CD personnalisés (GitHub Actions, GitLab CI), automatisation avancée, orchestration multi-workspace.

CritèreCLI-drivenVCS-drivenAPI-driven
Déclencheurterraform plan/applyPush / merge GitAppel HTTP
Speculative plansOui (terraform plan)Oui (PR automatique)Oui (API)
ApprobationDans le terminalDans l’interface webVia API
Cas d’usageDéveloppementÉquipes, productionCI/CD
ComplexitéFaibleMoyenneÉlevée
Disponible en gratuit

Quand vous déclenchez un run, vous pouvez choisir un mode de planification qui modifie le comportement du plan :

ModeCommande CLICe qu’il fait
Normal (défaut)terraform planCompare la configuration au state et propose les changements
Destroyterraform plan -destroyPropose la suppression de toutes les ressources
Refresh-onlyterraform plan -refresh-onlyMet à jour le state sans modifier l’infrastructure

C’est le mode par défaut. Terraform compare votre code HCL au state et calcule un plan de création, modification ou suppression de ressources.

Fenêtre de terminal
terraform plan
# Plan: 2 to add, 1 to change, 0 to destroy.

Ce mode propose la suppression de toutes les ressources gérées par le workspace. Utile pour nettoyer un lab ou un environnement temporaire.

Fenêtre de terminal
terraform plan -destroy
# Plan: 0 to add, 0 to change, 3 to destroy.

Vous pouvez aussi déclencher un destroy depuis l’interface web : Settings → Destruction and Deletion → Queue destroy plan.

Ce mode synchronise le state avec l’état réel de l’infrastructure sans proposer de changements. Il détecte le drift — les modifications faites en dehors de Terraform (console cloud, script, intervention manuelle).

Fenêtre de terminal
terraform plan -refresh-only
terraform apply -refresh-only

Dans l’interface web, cette action est exposée sous Actions → Start new run → Refresh state.

Si Terraform détecte un écart entre le state et la réalité, il vous propose de mettre à jour le state pour refléter l’état actuel.

L’interface web d’HCP Terraform affiche le détail de chaque run :

ZoneCe qu’elle montre
Run listHistorique chronologique de tous les runs du workspace
Plan outputLe résultat du plan (ressources ajoutées, modifiées, supprimées)
Policy checkRésultat des vérifications Sentinel / OPA (si configurées)
Apply outputLes logs de l’apply (succès, erreurs, durée)
State versionsL’historique des versions du state (restauration possible par un admin)

Chaque run affiche son statut en temps réel : Pending → Planning → Planned → Applying → Applied (ou Errored / Discarded / Canceled).

  • Discard : rejette un run en attente d’approbation (le plan a été calculé mais vous ne voulez pas appliquer)
  • Cancel : annule un run en cours (le plan ou l’apply est interrompu)
  • Force Cancel : annule un run bloqué qui ne répond plus

Depuis Terraform 1.6, vous pouvez créer un saved plan — un plan calculé et stocké que vous pouvez appliquer plus tard sans recalculer :

Fenêtre de terminal
terraform plan -out=tfplan
terraform apply tfplan

En mode CLI-driven avec HCP Terraform, le saved plan est stocké sur la plateforme. L’apply reprend exactement le plan sauvegardé, sans recalcul. Cela garantit que ce que vous avez relu est exactement ce qui sera appliqué.

SymptômeCause probableSolution
Le run reste en pending longtempsUn run précédent est encore en coursAttendez ou annulez le run bloquant
Error: Failed to request discovery documentProblème réseau vers app.terraform.ioVérifiez votre connectivité et vos proxies
Le speculative plan ne s’affiche pas dans la PRConnexion VCS mal configuréeVérifiez Settings → Version Control
Error: Saved plan is staleLe state a changé depuis le planRelancez un terraform plan pour obtenir un plan à jour
L’apply échoue mais le plan était bonChangement concurrent dans l’infrastructureRelancez le plan pour détecter le drift
Le run affiche Policy check: hard-mandatory failedLe plan viole une politique de conformitéCorrigez la configuration pour respecter la politique
  • Un run est le cycle complet : plan → policy check → apply. Les runs standard sont sérialisés par workspace ; les speculative plans et saved plans ignorent cette file d’attente.
  • CLI-driven pour le développement, VCS-driven pour les environnements partagés, API-driven pour l’automatisation CI/CD. Les trois sont disponibles en édition gratuite.
  • Les speculative plans sur les PR montrent les changements sans les appliquer — c’est votre filet de sécurité avant le merge.
  • Trois modes de planification : normal (changements), destroy (suppression), refresh-only (synchronisation du state).
  • Le mode refresh-only détecte le drift mais ne le corrige pas — il faut un plan normal ensuite.
  • Les saved plans garantissent que l’apply correspond exactement au plan que vous avez relu.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn