# hcl

Published articles for hcl.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Compatibility Testing Pulumi HCL

DevFeed: [Compatibility Testing Pulumi HCL](<https://devfeed.tech/articles/compatibility-testing-pulumi-hcl-18993.md>)

Original publisher: [Read original article](<https://www.pulumi.com/blog/compatibility-testing-pulumi-hcl/>)

Author: Ian Wahbe

Published: 2026-08-14T00:00:00Z

Content type: tutorial

Language: en

Sources: [Pulumi](<https://devfeed.tech/sources/pulumi.md>)

Topics: [Testing](<https://devfeed.tech/topics/testing.md>), [opentofu](<https://devfeed.tech/topics/opentofu.md>), [Terraform](<https://devfeed.tech/topics/terraform.md>), [terraform provider](<https://devfeed.tech/topics/terraform-provider.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [hcl](<https://devfeed.tech/tags/hcl.md>), [opentofu](<https://devfeed.tech/tags/opentofu.md>), [terraform](<https://devfeed.tech/tags/terraform.md>), [terraform-provider](<https://devfeed.tech/tags/terraform-provider.md>), [testing](<https://devfeed.tech/tags/testing.md>)

### AI overview

The article explains a compatibility-testing approach for Pulumi HCL. It defines correctness as Pulumi HCL and OpenTofu generating the same Terraform provider steps from the same HCL program, then describes tests that compare provider configuration and RPC behavior.

### Source excerpt

Pulumi HCL has at its core a simple promise: A program that works for tofu apply will also work for pulumi up. This must be true to allow Terraform modules to be shared between tofu config and Pulumi programs. This property makes testing Pulumi HCL simple. Let me explain. At the end of the day, Pulumi is a system to translate actual state & desired state into a series of imperative actions, so actual state can be reconciled to desired state. Terraform is a system to translate actual state & desired state into a series of imperative actions, so actual state can be reconciled to desired state. How desired state is expressed can be radically different, and the underlying reconciliation engine can be radically different, but at the end of the day, both tools do the same thing: Executing a Terraform program looks like this: flowchart LR tf["*.tf files"] current["current state"] subgraph engine["reconciliation engine"] direction LR desired["desired state"] --> internal["provider steps"] end output["provider steps"] tf --> desired current --> engine engine --> output Executing a Pulumi program is more dynamic, because the reconciliation engine is in more active dialog with the user's program. That said, the diagram is the same shape. To match semantics, Pulumi HCL dynamically bridges any Terraform provider in the registry. This means that, for the subset of Pulumi programs that are valid OpenTofu programs, both programs take the same input (*.tf files) and produce the same step output (Terraform provider steps). Providers are the part of our model that generates user-observable behavior, which means if we match what providers see, we match what users see. This gives us a really nice definition of correctness for Pulumi HCL1: Pulumi HCL correctly interprets an HCL program when it generates the same set of provider steps as tofu does. If you are familiar with property-based testing, you might be thinking this looks like a testable property. You're right. How we compatibility

## Pulumi Cloud Adds Terraform Backend Support for Agentic Infrastructure

DevFeed: [Pulumi Cloud Adds Terraform Backend Support for Agentic Infrastructure](<https://devfeed.tech/articles/bring-your-terraform-estate-into-the-agentic-era-18991.md>)

Original publisher: [Read original article](<https://www.pulumi.com/blog/bring-your-terraform-estate-into-the-agentic-era/>)

Author: Daniel Perlovsky

Published: 2026-08-04T00:00:00Z

Content type: release

Language: en

Sources: [Pulumi](<https://devfeed.tech/sources/pulumi.md>)

Topics: [Terraform](<https://devfeed.tech/topics/terraform.md>), [Infrastructure as code](<https://devfeed.tech/topics/infrastructure-as-code.md>), [opentofu](<https://devfeed.tech/topics/opentofu.md>), [Cloud](<https://devfeed.tech/topics/cloud.md>), [Deployment](<https://devfeed.tech/topics/deployment.md>)

Tags: [agentic](<https://devfeed.tech/tags/agentic.md>), [agents](<https://devfeed.tech/tags/agents.md>), [ai-agents](<https://devfeed.tech/tags/ai-agents.md>), [cloud](<https://devfeed.tech/tags/cloud.md>), [deployment](<https://devfeed.tech/tags/deployment.md>), [enterprise](<https://devfeed.tech/tags/enterprise.md>), [hcl](<https://devfeed.tech/tags/hcl.md>), [iac](<https://devfeed.tech/tags/iac.md>), [infrastructure-as-code](<https://devfeed.tech/tags/infrastructure-as-code.md>), [opentofu](<https://devfeed.tech/tags/opentofu.md>), [platform](<https://devfeed.tech/tags/platform.md>), [product](<https://devfeed.tech/tags/product.md>), [pulumi-cloud](<https://devfeed.tech/tags/pulumi-cloud.md>), [terraform](<https://devfeed.tech/tags/terraform.md>)

### AI overview

Pulumi announces general availability of Pulumi Cloud as a backend for Terraform state. The release supports existing Terraform deployment patterns while adding Pulumi Cloud capabilities such as remote runs, visibility, manual approvals, and scalable access management.

### Source excerpt

At Pulumi, we are building the platform for agentic infrastructure. Pulumi Cloud provides the guardrails and enterprise readiness needed to safely move fast in this new era. While we are seeing extraordinary adoption -- over 40% of our users now manage infrastructure using AI agents -- we know many organizations are at different phases in their AI journey and have to balance building for the future with maintaining their existing infrastructure as code (IaC) solutions like Terraform. Today, we are launching three ways that Pulumi lets you avoid trading off building for the future against building for today. You don't have to rip out Terraform to enter the agentic era. Pulumi Cloud brings agentic infrastructure to the IaC estate you already have. What we're shipping today Last December, our CEO Joe Duffy laid out his vision to make Pulumi the platform for all of your infrastructure as code. The capabilities we are launching today make that promise a reality. Pulumi is now fully interoperable with Terraform and OpenTofu and enables organizations to build upon their existing IaC estate rather than starting from scratch as they work toward the agentic infrastructure future. Pulumi Cloud as a Terraform backend We are excited to announce the general availability of Pulumi Cloud as the backend to your Terraform state, enabling organizations to seamlessly lift and shift their existing Terraform estates. We recognize there is lots of infrastructure that works as is, and switching over to a new management paradigm may not always be possible. Pulumi Cloud support for the Terraform state backend lets organizations maintain their existing Terraform deployment patterns while also unlocking the power of Pulumi Cloud. The following common patterns for running Terraform are now supported: Plans and applies run remotely by default for new Terraform stacks, following the behavior of HCP Terraform and Terraform Enterprise. When you run a Terraform operation, it executes on a Pulumi-hoste

## Emulating Terraform on Pulumi's Engine

DevFeed: [Emulating Terraform on Pulumi's Engine](<https://devfeed.tech/articles/emulating-terraform-on-pulumi-s-engine-19032.md>)

Original publisher: [Read original article](<https://www.pulumi.com/blog/terraforms-data-model-on-pulumis-engine/>)

Author: Ian Wahbe

Published: 2026-08-04T00:00:00Z

Content type: article

Language: en

Sources: [Pulumi](<https://devfeed.tech/sources/pulumi.md>)

Topics: [Terraform](<https://devfeed.tech/topics/terraform.md>), [opentofu](<https://devfeed.tech/topics/opentofu.md>), [terraform provider](<https://devfeed.tech/topics/terraform-provider.md>), [configuration](<https://devfeed.tech/topics/configuration.md>)

Tags: [engineering](<https://devfeed.tech/tags/engineering.md>), [hcl](<https://devfeed.tech/tags/hcl.md>), [modules](<https://devfeed.tech/tags/modules.md>), [opentofu](<https://devfeed.tech/tags/opentofu.md>), [protocol](<https://devfeed.tech/tags/protocol.md>), [providers](<https://devfeed.tech/tags/providers.md>), [pulumi](<https://devfeed.tech/tags/pulumi.md>), [terraform](<https://devfeed.tech/tags/terraform.md>), [terraform-provider](<https://devfeed.tech/tags/terraform-provider.md>), [translation](<https://devfeed.tech/tags/translation.md>)

### AI overview

This article explains how Pulumi's HCL interpreter maps Terraform configuration, resources, providers, and modules onto the Pulumi engine. It reports that the implementation works with 96% of Pulumi's top Terraform modules and describes how Pulumi's terraform-provider relays between Pulumi and Terraform provider protocols.

### Source excerpt

The core promise of Pulumi's HCL support is that you can bring your existing Terraform configuration and modules, and pulumi will run them. If it works in OpenTofu and doesn't work in Pulumi, we would like to fix that. Given that goal, our HCL interpreter needs to take HCL as input and emit instructions to the Pulumi engine that semantically match how tofu would interpret the same input. This is made harder by the fact that Pulumi and OpenTofu have fundamentally different engine semantics and provider ecosystems. This blog post will explore how we have implemented that mapping well enough to get 96%1 of our top Terraform modules working on Pulumi. We'll briefly walk through how Pulumi's HCL interpreter handles Terraform's resource semantics, providers, and modules. It will also call out where Pulumi's HCL support lets you do things that Terraform and OpenTofu will not allow. Providers Both Pulumi and Terraform have providers, but they don't have the same providers. While there are providers that Terraform does not have, Pulumi can always resolve a Terraform provider using Pulumi's confusingly named terraform-provider provider.2 This is the same provider that lets you consume Any Terraform Provider in another Pulumi program with pulumi package add terraform-provider .... The terraform-provider provider acts as a relay: it speaks Pulumi's protocol to the Pulumi engine, and speaks Terraform's provider protocol to the Terraform provider it stands up. Because Pulumi HCL needs to work with all Pulumi providers and because terraform-provider lets Pulumi HCL speak to Terraform providers via the Pulumi protocol, Pulumi HCL actually only speaks Pulumi protocols directly: flowchart LR subgraph n2Entry[" "] n2["terraform-provider"] end subgraph providerBox["Pulumi Provider"] direction TD n2Entry n3["Terraform Provider"] end n0["Pulumi HCL"] <--> n1["Pulumi Engine"] n1 <--> n2Entry n2 <--> n3 n2@{ shape: rect} n3@{ shape: rect} n0@{ shape: rect} n1@{ shape: rect} style n2Entry f

## A guided tour of Terraform state, hosted modules, and HCL in Pulumi

DevFeed: [A guided tour of Terraform state, hosted modules, and HCL in Pulumi](<https://devfeed.tech/articles/a-guided-tour-of-terraform-state-hosted-modules-and-hcl-in-pulumi-19031.md>)

Original publisher: [Read original article](<https://www.pulumi.com/blog/terraform-to-pulumi-cloud-hands-on/>)

Author: Christian Nunciato

Published: 2026-08-04T00:00:00Z

Content type: tutorial

Language: en

Sources: [Pulumi](<https://devfeed.tech/sources/pulumi.md>)

Topics: [Terraform](<https://devfeed.tech/topics/terraform.md>), [opentofu](<https://devfeed.tech/topics/opentofu.md>), [Amazon S3](<https://devfeed.tech/topics/amazon-s3.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [Cloud](<https://devfeed.tech/topics/cloud.md>), [GitHub](<https://devfeed.tech/topics/github.md>), [Template](<https://devfeed.tech/topics/template.md>)

Tags: [amazon-s3](<https://devfeed.tech/tags/amazon-s3.md>), [aws](<https://devfeed.tech/tags/aws.md>), [cli](<https://devfeed.tech/tags/cli.md>), [github](<https://devfeed.tech/tags/github.md>), [hcl](<https://devfeed.tech/tags/hcl.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [infrastructure-as-code](<https://devfeed.tech/tags/infrastructure-as-code.md>), [modules](<https://devfeed.tech/tags/modules.md>), [opentofu](<https://devfeed.tech/tags/opentofu.md>), [pulumi-cloud](<https://devfeed.tech/tags/pulumi-cloud.md>), [registry](<https://devfeed.tech/tags/registry.md>), [s3](<https://devfeed.tech/tags/s3.md>), [terraform](<https://devfeed.tech/tags/terraform.md>), [tutorials](<https://devfeed.tech/tags/tutorials.md>)

### AI overview

A hands-on walkthrough shows how to move a Terraform project that provisions an Amazon S3 bucket into Pulumi Cloud. It covers Pulumi Cloud as a Terraform state backend, hosted Terraform modules, and HCL authoring support, with references to OpenTofu and AWS.

### Source excerpt

Today's big release contains a whole new set of features designed for seamless interoperability with the Terraform and OpenTofu ecosystems, and there's a lot there -- so much that it can be tough to get your head around all of it. But it generally falls into three major categories: Support for Pulumi Cloud as a Terraform state backend, including remote execution with human approvals A Terraform module registry in Pulumi Cloud that lets you publish, document, and share your modules even across language boundaries First-class support for HCL as an authoring language in the Pulumi engine To make this release a little easier to appreciate holistically, I've put together a quick end-to-end walkthrough that doesn't quite cover everything, but does cover the big stuff, and should give you a sense of how it all comes together. We'll start with a simple Terraform project that you'll deploy to AWS, and then one step at a time, bring it into Pulumi Cloud and kick the tires on each of these new features as we go. It'll take a bit, but all you'll need are a free Pulumi account and the ability to deploy an S3 bucket to AWS. We've got a bunch to cover, so let's jump right in. Start with a Terraform project Our tour begins with a tiny Terraform project that provisions a single Amazon S3 bucket using a locally defined module that we'll publish later. The project is available on GitHub as a template, and the easiest way to use it is with the GitHub CLI: $ gh repo create my-tf-project \ --template cnunciato/simple-tf-template \ --public \ --clone && cd my-tf-project We'll use the local Terraform backend to start. Set your AWS credentials (preferably with environment variables), then deploy the project with Terraform or OpenTofu. (This walkthrough uses the terraform CLI, but you can swap in tofu if that's your preference.) $ terraform init && terraform apply ... Apply complete! Resources: 2 added, 0 changed, 0 destroyed. Outputs: bucket_arn = "arn:aws:s3:::my-tf-project-bucket-14d19ece"

## How Terraform Works

DevFeed: [How Terraform Works](<https://devfeed.tech/articles/how-terraform-works-34679.md>)

Original publisher: [Read original article](<https://newsletter.systemdesigncodex.com/p/how-terraform-works>)

Author: Saurabh Dashora

Published: 2026-05-05T07:41:46Z

Content type: tutorial

Language: en

Sources: [System Design Codex](<https://devfeed.tech/sources/system-design-codex.md>)

Topics: [Terraform](<https://devfeed.tech/topics/terraform.md>), [Infrastructure as code](<https://devfeed.tech/topics/infrastructure-as-code.md>), [Provisioning](<https://devfeed.tech/topics/provisioning.md>), [CI/CD](<https://devfeed.tech/topics/cicd.md>), [Pull Request](<https://devfeed.tech/topics/pull-request.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>)

Tags: [changes](<https://devfeed.tech/tags/changes.md>), [ci-cd](<https://devfeed.tech/tags/ci-cd.md>), [hcl](<https://devfeed.tech/tags/hcl.md>), [infrastructure-as-code-iac](<https://devfeed.tech/tags/infrastructure-as-code-iac.md>), [plan](<https://devfeed.tech/tags/plan.md>), [preview](<https://devfeed.tech/tags/preview.md>), [provisioning](<https://devfeed.tech/tags/provisioning.md>), [terraform](<https://devfeed.tech/tags/terraform.md>)

### AI overview

A step-by-step introduction to how Terraform uses Infrastructure as Code and HCL configurations to define resources, preview changes with Terraform Plan, and provision infrastructure with Terraform Apply. It also explains providers, variables, modules, state, workspaces, and CI/CD or pull-request workflows.

### Source excerpt

Step by step