{"id":279127,"date":"2025-07-21T05:07:09","date_gmt":"2025-07-21T05:07:09","guid":{"rendered":"https:\/\/www.europesays.com\/uk\/279127\/"},"modified":"2025-07-21T05:07:09","modified_gmt":"2025-07-21T05:07:09","slug":"pulumi-enables-direct-consumption-of-terraform-modules","status":"publish","type":"post","link":"https:\/\/www.europesays.com\/uk\/279127\/","title":{"rendered":"Pulumi Enables Direct Consumption of Terraform Modules"},"content":{"rendered":"<p>&#13;<br \/>\nPulumi now allows developers to use Terraform modules directly, without converting them first. This preview feature allows Pulumi programs written in TypeScript, Python, Go, C# or Java to consume Terraform modules as-is, removing one of the key barriers to adoption.&#13;\n<\/p>\n<p>&#13;<br \/>\nWriting in the<a href=\"https:\/\/www.pulumi.com\/blog\/announcing-direct-tf-modules\/\" target=\"_blank\" rel=\"noopener\"> announcement post<\/a>, Pulumi engineer Anton Tayanovskyy said the feature \u201caddresses one of the most significant challenges our users face when migrating from Terraform to Pulumi\u201d particularly for teams with deep investments in Terraform modules. He explained that it \u201cgives you the best of both worlds: the ability to start new projects in Pulumi immediately while preserving your existing Terraform modules until you\u2019re ready to migrate them\u201d.&#13;\n<\/p>\n<p>&#13;<br \/>\nSupport is provided through the pulumi package <a href=\"https:\/\/www.pulumi.com\/docs\/iac\/extending-pulumi\/use-terraform-module\/\" target=\"_blank\" rel=\"noopener\">add terraform-module command<\/a>, available from CLI version 3.178.0. Under the hood, Pulumi wraps Terraform\u2019s execution engine using the terraform-module provider. This allows infrastructure defined in .tf modules to behave like native Pulumi components, while still integrating with Pulumi\u2019s state backend, secrets management and automation workflows.&#13;\n<\/p>\n<p>&#13;<br \/>\nEnterprise accounts lead Dipali Patel described the announcement as a turning point, writing on<a href=\"https:\/\/www.linkedin.com\/posts\/dipalipatel1_new-use-terraform-modules-in-pulumi-without-activity-7344383732201517057-QKFt\" target=\"_blank\" rel=\"noopener\"> LinkedIn<\/a> that \u201cPulumi just made your Terraform life way easier,\u201d and calling it \u201cthe ultimate \u2018no excuses\u2019 moment to start modernising your Infra as Code, without the pain of a full rewrite.\u201d Her comments highlight a recognition among teams of the value in tooling that supports gradual transitions over all-or-nothing migrations.&#13;\n<\/p>\n<p>&#13;<br \/>\nThe<a href=\"https:\/\/www.linkedin.com\/posts\/pulumi_new-use-terraform-modules-in-pulumi-without-activity-7343307085083774980-KNxR\" target=\"_blank\" rel=\"noopener\"> official Pulumi LinkedIn account<\/a> echoed that message, stating the new functionality solves \u201cone of the biggest challenges in migrating complex infrastructure.\u201d Pulumi has positioned itself as a platform that allows developers to work in general-purpose languages without giving up compatibility with existing tools and ecosystems.&#13;\n<\/p>\n<p>&#13;<br \/>\nThe feature remains in preview, and Pulumi has been clear about its limitations. The<a href=\"https:\/\/github.com\/pulumi\/pulumi-terraform-module\" target=\"_blank\" rel=\"noopener\"> GitHub documentation<\/a> notes that \u201cTerraform modules have insufficient metadata to precisely identify the type of every module output,\u201d and recommends overriding inferred types manually where needed. Feedback is actively encouraged as the company works to improve compatibility and stability.&#13;\n<\/p>\n<p>&#13;<br \/>\nPulumi\u2019s support for Terraform modules mirrors similar features in other widely used tools. <a href=\"https:\/\/developer.hashicorp.com\/terraform\/cdktf\" target=\"_blank\" rel=\"noopener\">CDK for Terraform<\/a> allows infrastructure to be defined in TypeScript, Python, Java, C# or Go while using existing Terraform modules from the <a href=\"https:\/\/registry.terraform.io\/\" target=\"_blank\" rel=\"noopener\">Terraform Registry<\/a>. <a href=\"https:\/\/terragrunt.gruntwork.io\/docs\/\" target=\"_blank\" rel=\"noopener\">Terragrunt<\/a> also supports referencing remote Terraform modules, helping teams manage shared infrastructure configurations more easily. By enabling direct module support, Pulumi aligns with this broader trend of integrating with Terraform ecosystems rather than replacing them.&#13;\n<\/p>\n<p>&#13;<br \/>\nThe feature allows Pulumi to interoperate more easily with existing Terraform code, offering teams a way to incorporate familiar modules while exploring Pulumi\u2019s language-based approach. It is intended to support gradual adoption without requiring full migration up front.&#13;<\/p>\n","protected":false},"excerpt":{"rendered":"&#13; Pulumi now allows developers to use Terraform modules directly, without converting them first. This preview feature allows&hellip;\n","protected":false},"author":2,"featured_media":279128,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3939],"tags":[30172,4021,4020,4022,12495,22486,77,105178,105176,105177,16,15],"class_list":{"0":"post-279127","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-arts-and-design","8":"tag-architecture-design","9":"tag-arts","10":"tag-arts-and-design","11":"tag-design","12":"tag-development","13":"tag-devops","14":"tag-entertainment","15":"tag-infrastructure-as-code","16":"tag-pulumi-terraform-module-support","17":"tag-terraform","18":"tag-uk","19":"tag-united-kingdom"},"share_on_mastodon":{"url":"https:\/\/pubeurope.com\/@uk\/114889493279590182","error":""},"_links":{"self":[{"href":"https:\/\/www.europesays.com\/uk\/wp-json\/wp\/v2\/posts\/279127","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.europesays.com\/uk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.europesays.com\/uk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.europesays.com\/uk\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.europesays.com\/uk\/wp-json\/wp\/v2\/comments?post=279127"}],"version-history":[{"count":0,"href":"https:\/\/www.europesays.com\/uk\/wp-json\/wp\/v2\/posts\/279127\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.europesays.com\/uk\/wp-json\/wp\/v2\/media\/279128"}],"wp:attachment":[{"href":"https:\/\/www.europesays.com\/uk\/wp-json\/wp\/v2\/media?parent=279127"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.europesays.com\/uk\/wp-json\/wp\/v2\/categories?post=279127"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.europesays.com\/uk\/wp-json\/wp\/v2\/tags?post=279127"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}