Pulumi et Terraform peuvent fonctionner ensemble : qu’est-ce qui change vraiment pour les équipes d’infrastructure ?

Pulumi relie désormais l’état, les modules et le HCL de Terraform de différentes manières. Découvrez quelles options préservent les flux de travail Terraform et lesquelles changent le moteur d’exécution.

Lire en : English · తెలుగు · हिन्दी · Français · Español

Se connecter pour enregistrer

Illustration des logos Pulumi et Terraform au-dessus de trois panneaux intitulés « HCL », « Modules » et « State » sur une plateforme cloud, avec des coches à côté de « Re-use », « Interoperate » et « Migrate ». Les logos sont des approximations générées par IA et les coches sont décoratives.

Les améliorations d’interopérabilité apportées par Pulumi en 2026 permettent aux organisations de conserver leurs flux de travail Terraform, de partager des modules d’infrastructure entre langages et d’exécuter du HCL avec le moteur Pulumi. Ces options lèvent certains obstacles à la migration, mais chacune a des conséquences différentes pour l’état, l’exécution et la propriété des ressources.

Une équipe d’infrastructure peut avoir investi des années de travail dans des modules Terraform, des pipelines de déploiement et un état (state) de production. Passer à une autre plateforme d’infrastructure as code peut signifier réécrire la configuration, modifier les processus de livraison et valider des ressources qui fonctionnent déjà.

La version publiée par Pulumi en août 2026 élargit les façons dont les équipes peuvent utiliser ensemble Terraform, OpenTofu (une implémentation open source compatible avec Terraform) et Pulumi, sans tout remplacer d’un coup. Cette version réunit trois capacités : l’état et l’exécution Terraform via Pulumi Cloud, l’interopérabilité des modules Terraform entre langages, et HCL (HashiCorp Configuration Language, le langage des fichiers de configuration Terraform) comme langage de programmation Pulumi. Ce sont des approches différentes. Comprendre cette distinction est plus utile que de traiter cette version comme une fonctionnalité de migration unique.

Trois capacités, trois changements différents

CapacitéCe qui changeCe qui reste important
Backend Terraform et exécution à distanceL’état Terraform et, en option, l’exécution passent dans Pulumi CloudLes flux de travail Terraform ou OpenTofu demeurent, l’exécution à distance étant soumise au modèle d’exécution de Pulumi Cloud
Interopérabilité des modules TerraformLes modules existants peuvent être publiés, consommés et réutilisés dans les langages pris en chargeL’exécution des modules, les dépendances et la compatibilité doivent toujours être validées
Runtime HCL de PulumiLa configuration HCL s’exécute sur le moteur PulumiL’état Pulumi et la propriété des ressources remplacent le modèle d’exécution Terraform

La différence tient d’abord à deux notions. La configuration décrit l’infrastructure qu’une équipe souhaite obtenir. L’état enregistre les ressources réelles associées à un flux de gestion de l’infrastructure.

Déplacer le stockage de l’état ne change pas nécessairement le moteur qui applique la configuration. En revanche, exécuter le même HCL avec un autre moteur change davantage que l’emplacement d’un fichier d’état.

Source : Pulumi, Full Support for Terraform State, Modules and HCL, août 2026.

1. Conserver Terraform et utiliser Pulumi Cloud pour l’état

Une équipe peut continuer à écrire du HCL et à lancer les commandes Terraform ou OpenTofu habituelles tout en stockant l’état dans Pulumi Cloud. Le backend offre une gestion centralisée de l’état, le verrouillage, des contrôles d’accès, un historique des mises à jour et une visibilité sur les ressources gérées. Ce dispositif ne transforme pas des ressources gérées par Terraform en ressources gérées par le moteur Pulumi. Le flux de travail existant peut rester en grande partie intact.

Pulumi Cloud propose aussi l’exécution à distance (remote execution), mais il faut la distinguer d’une utilisation comme simple backend d’état. Avec l’exécution locale, la CLI Terraform ou OpenTofu exécute les opérations dans l’environnement propre à l’équipe, tandis que Pulumi Cloud stocke l’état. Avec l’exécution à distance, la CLI envoie la configuration à Pulumi Cloud, où une infrastructure gérée effectue le plan ou l’apply.

Un détail de mise en œuvre important : l’exécuteur distant (runner) de Pulumi Cloud utilise OpenTofu comme moteur d’exécution, même lorsque l’opération a été lancée depuis la CLI Terraform. La version d’OpenTofu gérée est actuellement contrôlée par Pulumi Cloud et non choisie par le client.

L’exécution à distance présente aussi des limites précises, notamment l’absence de prise en charge des options -var et l’impossibilité de configurer des images d’exécuteur personnalisées. Ces différences comptent pour les équipes dont les pipelines existants dépendent de versions particulières de Terraform, d’arguments de ligne de commande ou d’une personnalisation de l’exécuteur.

Exécution locale et à distance avec Pulumi Cloud comme backend d’étatTrois points. Avec l’exécution locale, la CLI Terraform ou OpenTofu s’exécute dans l’environnement propre à l’équipe, tandis que Pulumi Cloud stocke l’état. Avec l’exécution à distance, Pulumi Cloud effectue le plan ou l’apply avec OpenTofu. L’exécution à distance a des limites, notamment l’absence de prise en charge des options -var et l’absence d’images d’exécuteur personnalisées.{« publisher »: « TechiesJournal », « author »: « Prasad Kukkala », « asset »: « pulumi-terraform-interoperability-state-modules-hcl-figure-1 », « role »: « diagram », « title »: « Local and remote execution with Pulumi Cloud as the state backend », « description »: « Three points. With local execution the Terraform or OpenTofu CLI runs in the team’s own environment while Pulumi Cloud stores the state. With remote execution Pulumi Cloud runs the plan or apply using OpenTofu. Remote execution has limits, including unsupported -var flags and no custom executor images. », « caption »: « Figure 1. Local and remote execution with a Pulumi Cloud backend. Select a point to read it. », « creator »: « TechiesJournal, authored as programmatic SVG by Claude (AI agent), not a generative image model », « generation_method »: « programmatic SVG, tools/pulumi-terraform-interop/figures.py », « source_slug »: « pulumi-terraform-interoperability-state-modules-hcl », « source_revision »: « V1.4 », « created »: « 2026-11-04 », « rights »: « Copyright 2026 TechiesJournal. All rights reserved. », « external_licence »: « none, no third-party material, no vendor logo », « watermark »: « visible TechiesJournal wordmark, lower right, part of the SVG », « language »: « fr (labels translated from the English figure) », « viewBox »: « 0 0 420 266 », « format »: « inline SVG, part of the post content (no separate file) », « file_size_bytes »: « not applicable, inline in the post », « evidence_note »: « Restates sentences of the approved manuscript only. No new claim, number or source. Not a measurement. », « light_dark_theme_verified »: « verified light and dark 2026-11-04: text and graphic contrast measured against WCAG AA, see the SOP audit record »}1En localLa CLI tourne chez vous2À distanceOpenTofu sur Pulumi Cloud3Limites à voiroptions -var, images sur mesureTechiesJournal
Figure 1. Exécution locale et à distance avec un backend Pulumi Cloud. Sélectionnez un point pour le lire.

En local

Une équipe peut continuer à écrire du HCL et à lancer les commandes Terraform ou OpenTofu habituelles tout en stockant l’état dans Pulumi Cloud. Avec l’exécution locale, la CLI Terraform ou OpenTofu exécute les opérations dans l’environnement propre à l’équipe, tandis que Pulumi Cloud stocke l’état.

À distance

Avec l’exécution à distance, la CLI envoie la configuration à Pulumi Cloud, où une infrastructure gérée effectue le plan ou l’apply. Un détail de mise en œuvre important : l’exécuteur distant de Pulumi Cloud utilise OpenTofu comme moteur d’exécution, même lorsque l’opération a été lancée depuis la CLI Terraform.

Limites à voir

La version d’OpenTofu gérée est actuellement contrôlée par Pulumi Cloud et non choisie par le client. L’exécution à distance présente aussi des limites précises, notamment l’absence de prise en charge des options -var et l’impossibilité de configurer des images d’exécuteur personnalisées.

Sources : Pulumi, Store Terraform State in Pulumi Cloud et Remote Execution for Terraform and OpenTofu.

2. Partager des modules Terraform entre langages

Les modules Terraform représentent souvent des standards d’infrastructure établis. Une équipe plateforme peut maintenir des modules pour les réseaux, les bases de données, le stockage ou les contrôles d’accès. Réécrire ces composants uniquement parce qu’une autre équipe souhaite utiliser Python ou TypeScript crée du travail et introduit des écarts potentiels. Les fonctions d’interopérabilité de Pulumi offrent deux approches liées.

Registre de modules et composants générés. Les équipes peuvent publier des modules Terraform dans le registre privé de Pulumi Cloud. La plateforme peut les mettre à disposition des utilisateurs de Terraform et d’OpenTofu et générer des composants typés pour les langages pris en charge par Pulumi.

Intégration Any HCL Module. Les programmes Pulumi peuvent utiliser des modules Terraform existants grâce à une intégration qui exécute le module avec OpenTofu, associe les entrées fournies aux variables Terraform et expose les résultats sous forme de sorties Pulumi.

Le mécanisme Any HCL Module gère les ressources de ses modules via le backend d’état de Pulumi. Ce n’est pas la même chose que d’exécuter de manière indépendante une configuration racine Terraform existante avec son état d’origine. Les SDK générés peuvent fournir des entrées et des sorties typées, tandis que le chargement dynamique des modules offre plus de souplesse au prix d’une partie de la sûreté de typage.

L’avantage pratique est de réutiliser des définitions d’infrastructure éprouvées entre des équipes aux préférences de programmation différentes. La responsabilité qui demeure est le test de compatibilité. Les modules qui ont des dépendances complexes envers des fournisseurs (providers) ou des hypothèses d’exécution doivent toujours être validés dans leur environnement cible.

Deux façons de réutiliser des modules Terraform avec PulumiTrois points. Le registre de modules de Pulumi Cloud peut générer des composants typés pour les langages Pulumi. L’intégration Any HCL Module exécute un module existant avec OpenTofu et expose ses résultats sous forme de sorties Pulumi. Dans les deux cas, le test de compatibilité reste de la responsabilité de l’équipe.{« publisher »: « TechiesJournal », « author »: « Prasad Kukkala », « asset »: « pulumi-terraform-interoperability-state-modules-hcl-figure-2 », « role »: « diagram », « title »: « Two ways to reuse Terraform modules with Pulumi », « description »: « Three points. The Pulumi Cloud module registry can generate typed components for Pulumi languages. The Any HCL Module integration runs an existing module with OpenTofu and exposes its results as Pulumi outputs. Either way, compatibility testing remains the team’s responsibility. », « caption »: « Figure 2. Two module-reuse mechanisms and what still needs testing. Select a point to read it. », « creator »: « TechiesJournal, authored as programmatic SVG by Claude (AI agent), not a generative image model », « generation_method »: « programmatic SVG, tools/pulumi-terraform-interop/figures.py », « source_slug »: « pulumi-terraform-interoperability-state-modules-hcl », « source_revision »: « V1.4 », « created »: « 2026-11-04 », « rights »: « Copyright 2026 TechiesJournal. All rights reserved. », « external_licence »: « none, no third-party material, no vendor logo », « watermark »: « visible TechiesJournal wordmark, lower right, part of the SVG », « language »: « fr (labels translated from the English figure) », « viewBox »: « 0 0 420 266 », « format »: « inline SVG, part of the post content (no separate file) », « file_size_bytes »: « not applicable, inline in the post », « evidence_note »: « Restates sentences of the approved manuscript only. No new claim, number or source. Not a measurement. », « light_dark_theme_verified »: « verified light and dark 2026-11-04: text and graphic contrast measured against WCAG AA, see the SOP audit record »}1Registre privécomposants typés par langage2Any HCL ModuleOpenTofu lance le module3Reste à testerproviders, hypothèses d’exécutionTechiesJournal
Figure 2. Deux mécanismes de réutilisation des modules et ce qui reste à tester. Sélectionnez un point pour le lire.

Registre privé

Les équipes peuvent publier des modules Terraform dans le registre privé de Pulumi Cloud. La plateforme peut les mettre à disposition des utilisateurs de Terraform et d’OpenTofu et générer des composants typés pour les langages pris en charge par Pulumi.

Any HCL Module

Les programmes Pulumi peuvent utiliser des modules Terraform existants grâce à une intégration qui exécute le module avec OpenTofu, associe les entrées fournies aux variables Terraform et expose les résultats sous forme de sorties Pulumi. Le mécanisme Any HCL Module gère les ressources de ses modules via le backend d’état de Pulumi.

Reste à tester

La responsabilité qui demeure est le test de compatibilité. Les modules qui ont des dépendances complexes envers des fournisseurs ou des hypothèses d’exécution doivent toujours être validés dans leur environnement cible.

Source : Pulumi, Use Terraform Modules in Pulumi.

3. Exécuter du HCL avec le moteur Pulumi

La troisième capacité change le modèle d’exécution de l’infrastructure. Pulumi prend en charge HCL comme langage pour son moteur. Les équipes peuvent conserver la syntaxe de configuration .tf qu’elles connaissent tout en utilisant le cycle de vie des ressources et la gestion de l’état de Pulumi. Cela peut réduire l’effort nécessaire pour évaluer Pulumi sans réécrire toute une configuration dans un autre langage de programmation.

Cependant, l’état Terraform ne devient pas automatiquement un état Pulumi. Les ressources existantes doivent être placées sous la gestion de Pulumi au moyen d’un processus d’importation explicite.

Pulumi documente le mécanisme suivant pour les migrations HCL :

pulumi import --from hcl <statefile>

L’importation lit un fichier d’état Terraform existant et associe les ressources à la stack Pulumi. Il s’agit d’une opération de migration, et non d’une instruction pour faire tourner deux moteurs indépendants sur les mêmes ressources d’infrastructure.

Avant d’utiliser cette approche, les équipes doivent valider les correspondances de fournisseurs, les identités des ressources, les dépendances et l’aperçu (preview) obtenu. Elles doivent éviter que les mêmes ressources soient gérées simultanément par des systèmes d’état indépendants.

Il existe aussi des différences de compatibilité. Par exemple, le bloc Terraform backend et certains autres paramètres de configuration sont acceptés mais ignorés avec des avertissements, car Pulumi gère l’état de manière indépendante. Un bloc Terraform cloud n’est pas accepté. La prise en charge des connexions des provisioners est limitée, sans aucune prise en charge de WinRM.

Exécuter du HCL sur le moteur Pulumi est une migration avec une importation explicite de l’étatTrois points. Pulumi peut exécuter du HCL sur son propre moteur, en conservant une syntaxe familière. L’état Terraform ne devient pas automatiquement un état Pulumi, les ressources existantes doivent être importées explicitement. Avant de basculer, validez les correspondances de fournisseurs, les identités des ressources, les dépendances et l’aperçu, et ne gérez jamais la même ressource depuis deux systèmes d’état.{« publisher »: « TechiesJournal », « author »: « Prasad Kukkala », « asset »: « pulumi-terraform-interoperability-state-modules-hcl-figure-3 », « role »: « diagram », « title »: « Running HCL on the Pulumi engine is a migration with an explicit state import », « description »: « Three points. Pulumi can run HCL on its own engine, keeping familiar syntax. Terraform state does not become Pulumi state automatically, existing resources must be imported explicitly. Before switching, validate provider mappings, resource identities, dependencies and the preview, and never manage the same resource from two state systems. », « caption »: « Figure 3. HCL on the Pulumi engine needs an explicit state import. Select a point to read it. », « creator »: « TechiesJournal, authored as programmatic SVG by Claude (AI agent), not a generative image model », « generation_method »: « programmatic SVG, tools/pulumi-terraform-interop/figures.py », « source_slug »: « pulumi-terraform-interoperability-state-modules-hcl », « source_revision »: « V1.4 », « created »: « 2026-11-04 », « rights »: « Copyright 2026 TechiesJournal. All rights reserved. », « external_licence »: « none, no third-party material, no vendor logo », « watermark »: « visible TechiesJournal wordmark, lower right, part of the SVG », « language »: « fr (labels translated from the English figure) », « viewBox »: « 0 0 420 266 », « format »: « inline SVG, part of the post content (no separate file) », « file_size_bytes »: « not applicable, inline in the post », « evidence_note »: « Restates sentences of the approved manuscript only. No new claim, number or source. Not a measurement. », « light_dark_theme_verified »: « verified light and dark 2026-11-04: text and graphic contrast measured against WCAG AA, see the SOP audit record »}1HCL sur le moteur Pulumimême syntaxe, cycle de vie, état Pulumi2Import requisl’état ne se convertit pas seul3Vérifier avant basculemappages, dépendances, aperçuTechiesJournal
Figure 3. HCL sur le moteur Pulumi nécessite une importation explicite de l’état. Sélectionnez un point pour le lire.

HCL sur le moteur Pulumi

Pulumi prend en charge HCL comme langage pour son moteur. Les équipes peuvent conserver la syntaxe de configuration .tf qu’elles connaissent tout en utilisant le cycle de vie des ressources et la gestion de l’état de Pulumi.

Import requis

Cependant, l’état Terraform ne devient pas automatiquement un état Pulumi. Les ressources existantes doivent être placées sous la gestion de Pulumi au moyen d’un processus d’importation explicite. L’importation lit un fichier d’état Terraform existant et associe les ressources à la stack Pulumi.

Vérifier avant bascule

Avant d’utiliser cette approche, les équipes doivent valider les correspondances de fournisseurs, les identités des ressources, les dépendances et l’aperçu obtenu. Elles doivent éviter que les mêmes ressources soient gérées simultanément par des systèmes d’état indépendants.

L’équipe d’ingénierie de Pulumi a indiqué dans Emulating Terraform on Pulumi’s Engine que son interpréteur HCL avait exécuté 56 des 58 modules Terraform AWS les plus utilisés, soit 96 %, et que les échecs étaient dus aux ressources éphémères. Il s’agit d’un résultat communiqué par l’éditeur pour un ensemble particulier de modules AWS, et non de la preuve que 96 % des configurations Terraform de toute organisation migreront avec succès.

Sources : Pulumi, HCL Documentation, HCL Language Reference et Emulating Terraform on Pulumi’s Engine.

Que doivent choisir les équipes ?

Revenons à l’équipe d’infrastructure du début, et supposons qu’elle exploite un environnement Terraform établi mais souhaite introduire Pulumi pour de nouvelles infrastructures applicatives. Il s’agit d’une équipe hypothétique, utilisée ici pour comparer les options. Rien n’oblige à tout migrer d’un coup.

Besoin existantApproche à évaluer
Une meilleure gestion centralisée de l’étatBackend Terraform de Pulumi Cloud
Une exécution Terraform ou OpenTofu géréeExécution à distance de Pulumi Cloud, après validation de son exécuteur basé sur OpenTofu
Des modules Terraform partagés entre écosystèmes de langagesRegistre de modules et composants générés de Pulumi Cloud
Des modules Terraform dans des programmes PulumiIntégration Any HCL Module
Une configuration HCL gérée par le moteur PulumiPulumi HCL avec importation explicite de l’état et des ressources
Une infrastructure existante stable, sans besoin impérieux de migrationConserver le flux de travail Terraform actuel

Le bon choix dépend du problème opérationnel. Un nouveau backend d’état peut aider une équipe qui a besoin de contrôles centralisés. Des modules partagés peuvent aider les organisations qui prennent en charge plusieurs langages de programmation. Un autre moteur d’exécution peut avoir du sens lorsqu’une équipe souhaite le modèle de programmation plus large de Pulumi.

Aucun de ces avantages ne justifie automatiquement la migration d’un parc d’infrastructure établi et fonctionnel.

Les limites opérationnelles qui comptent toujours

Trois domaines méritent une attention particulière avant une adoption en production.

Propriété des ressources. Chaque ressource doit avoir un seul chemin de gestion clairement défini. Les équipes doivent savoir quel moteur applique les modifications et quel système d’état enregistre la ressource.

Politiques et détection de dérive. Pulumi Cloud peut appliquer des politiques d’audit aux stacks gérées par Terraform, ce que sa documentation indique pour les éditions Essentials, Pro et Enterprise. Les politiques préventives, qui bloquent un apply non conforme, sont disponibles via l’exécution à distance et documentées pour les éditions Pro et Enterprise. En revanche, la détection automatique de dérive (drift detection) n’est pas disponible actuellement pour les stacks gérées par Terraform. Les organisations peuvent avoir besoin de plans programmés ou d’un autre processus de surveillance existant.

Coûts et contraintes d’exécution. Les ressources Terraform stockées dans Pulumi Cloud sont comptées dans les ressources sous gestion. L’exécution à distance consomme des minutes de workflow facturables. Les équipes doivent aussi tenir compte des versions des fournisseurs, des limites de l’exécuteur et des exigences d’intégration aux déploiements existants. Les mises à niveau de fournisseurs sont une source fréquente de ces contraintes, comme l’explique The Terraform AWS Provider Keeps Growing: Is Your Upgrade Process Ready?.

Ce ne sont pas des raisons de rejeter l’interopérabilité. Elles font partie de l’évaluation visant à déterminer si une intégration donnée améliore le modèle opérationnel actuel de l’organisation.

Sources : Pulumi, Remote Execution for Terraform and OpenTofu et Store Terraform State in Pulumi Cloud.

Une démarche d’adoption pragmatique

Les équipes peuvent évaluer l’interopérabilité sans lancer de migration de grande ampleur. Si l’objectif est la gestion de l’état, testez le backend avec une stack Terraform représentative hors production. Vérifiez que l’initialisation, la migration de l’état, le verrouillage et la planification fonctionnent comme prévu.

Si l’objectif est la réutilisation de modules, choisissez un module aux dépendances significatives et vérifiez son comportement avec l’intégration retenue. Si l’objectif est l’adoption du moteur Pulumi, testez le runtime HCL avec une importation de ressources contrôlée et vérifiez que l’aperçu obtenu ne contient aucune modification involontaire.

Ces tests répondent à des questions différentes. Une migration de backend réussie ne prouve pas la compatibilité du runtime HCL. Un module réutilisable ne prouve pas que l’ensemble du parc Terraform peut migrer sans refonte. L’objectif doit être une amélioration vérifiée du flux de travail actuel, et non la simple adoption d’un outil de plus.

Ce que cette version change vraiment

Les améliorations d’interopérabilité publiées par Pulumi en août 2026 donnent aux équipes d’infrastructure davantage de moyens de préserver leurs investissements Terraform existants tout en adoptant certaines capacités de Pulumi. Elles ne rendent pas Terraform, OpenTofu et Pulumi identiques.

La distinction importante porte sur l’endroit où l’état est stocké, la manière dont les modules sont réutilisés et le moteur qui gère les ressources. Les organisations qui comprennent ces limites peuvent adopter l’interopérabilité progressivement, tout en gardant une propriété plus claire et des modifications d’infrastructure plus prévisibles.


Références et lectures complémentaires

  1. Pulumi, Full Support for Terraform State, Modules and HCL. Août 2026.
  2. Pulumi, Now Generally Available: Store Terraform State in Pulumi Cloud. 5 mars 2026.
  3. Pulumi, Store Terraform State in Pulumi Cloud. Documentation technique officielle.
  4. Pulumi, Remote Execution for Terraform and OpenTofu. Comportement d’exécution et limites officiels.
  5. Pulumi, Use Terraform Modules in Pulumi. Interopérabilité des modules.
  6. Pulumi, HCL Language Documentation. Compatibilité du moteur et de l’état.
  7. Pulumi, HCL Language Reference. Fonctionnalités non prises en charge et exigences de migration.
  8. Pulumi, Emulating Terraform on Pulumi’s Engine. 4 août 2026.

Vérification des sources : 5 novembre 2026. Les capacités et les affirmations de compatibilité reposent sur la documentation publiée par Pulumi et sur ses rapports d’ingénierie. TechiesJournal n’a pas testé de manière indépendante ces migrations en production. Le chiffre de 96 % a été vérifié par rapport à la note de bas de page du billet de Pulumi lui-même.

Proposer une correction

Les corrections sont transmises à la rédaction et ne sont jamais publiées automatiquement. Aucun compte n'est nécessaire.