From 187966565a789863f140d827504ca7f1824e5dcb Mon Sep 17 00:00:00 2001 From: Josh Kodroff Date: Mon, 18 May 2026 10:19:25 -0400 Subject: [PATCH] Clean up Terraform comparison subpages Folds the Terraform terminology and commands tables into the main Pulumi vs. Terraform page, moves the OpenTofu vs. Terraform page to /what-is/, and fixes the in-table links to use canonical paths. Result: a single un-nested Terraform comparison page. Fixes #19072 Co-Authored-By: Claude Opus 4.7 (1M context) --- content/docs/iac/comparisons/opentofu.md | 1 + .../docs/iac/comparisons/terraform/_index.md | 53 ++++++++++++- .../iac/comparisons/terraform/terminology.md | 75 ------------------- .../opentofu-vs-terraform.md} | 22 ++---- content/what-is/top-iac-tools.md | 2 +- 5 files changed, 60 insertions(+), 93 deletions(-) delete mode 100644 content/docs/iac/comparisons/terraform/terminology.md rename content/{docs/iac/comparisons/terraform/opentofu.md => what-is/opentofu-vs-terraform.md} (97%) diff --git a/content/docs/iac/comparisons/opentofu.md b/content/docs/iac/comparisons/opentofu.md index 6f22c48046cd..9488abbed0ef 100644 --- a/content/docs/iac/comparisons/opentofu.md +++ b/content/docs/iac/comparisons/opentofu.md @@ -141,5 +141,6 @@ Yes — and this is one of the more common adoption patterns. Pulumi can read ou - [Get started with Pulumi](/docs/iac/get-started/) - [Pulumi vs. Terraform](/docs/iac/comparisons/terraform/) +- [Pulumi terms and command equivalents for OpenTofu users](/docs/iac/comparisons/terraform/#terraform-terms-and-command-equivalents) - [Using any Terraform or OpenTofu provider with Pulumi](/docs/iac/concepts/providers/any-terraform-provider/) - [Migrating from Terraform to Pulumi](/docs/iac/guides/migration/migrating-to-pulumi/from-terraform/) diff --git a/content/docs/iac/comparisons/terraform/_index.md b/content/docs/iac/comparisons/terraform/_index.md index 866aed6b1d1c..fddab7907f67 100644 --- a/content/docs/iac/comparisons/terraform/_index.md +++ b/content/docs/iac/comparisons/terraform/_index.md @@ -19,6 +19,10 @@ aliases: - /docs/intro/vs/terraform/ - /docs/concepts/vs/terraform/ - /docs/iac/concepts/vs/terraform/ +- /docs/iac/comparisons/terraform/terminology/ +- /docs/intro/vs/terraform/terminology/ +- /docs/concepts/vs/terraform/terminology/ +- /docs/iac/concepts/vs/terraform/terminology/ --- Pulumi and [HashiCorp Terraform](https://developer.hashicorp.com/terraform) are both declarative infrastructure as code tools with overlapping capabilities and several meaningful differences. Pulumi lets you define infrastructure in general-purpose languages (Python, TypeScript, JavaScript, Go, .NET, Java, or YAML) and supports any cloud or SaaS provider through the [Pulumi Registry](/registry/); Terraform uses [HashiCorp Configuration Language (HCL)](https://developer.hashicorp.com/terraform/language) with HashiCorp's provider ecosystem. @@ -144,9 +148,54 @@ Yes. [Pulumi Cloud as a Terraform state backend](/docs/iac/get-started/terraform [`pulumi refresh`](/docs/iac/cli/commands/pulumi_refresh/) compares the state file to the actual state in the cloud and reports differences, and `pulumi preview --diff` shows what would change on the next update. Pulumi Cloud commercial plans add [scheduled drift detection and remediation](/docs/deployments/deployments/drift/) that runs on a configurable cadence and can auto-remediate. +## Terraform terms and command equivalents + +If you're already familiar with Terraform, many concepts and CLI commands have direct Pulumi equivalents. + +### Terminology + +| Terraform | Pulumi | +| --------- | ------ | +| Workspace | [Stack](/docs/iac/concepts/stacks/) | +| Variables | [Stack Config](/docs/iac/concepts/config/) | +| Directory | [Project](/docs/iac/concepts/projects/) | +| Module | [Component](/docs/iac/concepts/components/) | +| Resource | [Resource](/docs/iac/concepts/resources/) | +| Interpolation | [Interpolation](/docs/iac/concepts/inputs-outputs/#working-with-outputs) | +| Run | [Up](/docs/iac/cli/commands/pulumi_up/) | +| Output Values | [Outputs](/docs/iac/concepts/inputs-outputs/) | +| State | [State](/docs/iac/concepts/state-and-backends/) | +| State Version | [Update Events](/docs/reference/cloud-rest-api/) | +| Backend | [Backend](/docs/iac/concepts/state-and-backends/) | +| Deposed | [Pending Operations](/docs/support/troubleshooting/common-issues/interrupted-updates/) | + +### Commands + +| Terraform | Pulumi | +| --------- | ------ | +| `init` | `pulumi new` | +| `validate` | Validation is performed with the inherent syntax checking and testing frameworks in the supported programming languages | +| `plan` | `pulumi preview` | +| `apply` | `pulumi up` | +| `destroy` | `pulumi destroy` | +| `console` | Pulumi commands can be evaluated in a standard programming language shell | +| `fmt` | Standard programming language linting tools checks for format and style | +| `force-unlock` | `pulumi cancel` | +| `get` | Reusable modules are directly imported as a library in the programming language | +| `graph` | `pulumi stack graph` | +| `import` | `pulumi import -f resources.json` | +| `login` | `pulumi login` | +| `logout` | `pulumi logout` | +| `output` | `pulumi stack output` | +| `providers` | `pulumi plugin` | +| `refresh` | `pulumi refresh` | +| `show` | `pulumi stack` | +| `state` | `pulumi state` | +| `version` | `pulumi version` | +| `workspace` | `pulumi stack` | + ## Next steps - [Get started with Pulumi](/docs/iac/get-started/) -- [Pulumi terms and command equivalents for Terraform users](/docs/iac/comparisons/terraform/terminology/) - [Pulumi vs. OpenTofu](/docs/iac/comparisons/opentofu/) -- [OpenTofu vs. Terraform](/docs/iac/comparisons/terraform/opentofu/) +- [OpenTofu vs. Terraform](/what-is/opentofu-vs-terraform/) diff --git a/content/docs/iac/comparisons/terraform/terminology.md b/content/docs/iac/comparisons/terraform/terminology.md deleted file mode 100644 index 5337a38ff23a..000000000000 --- a/content/docs/iac/comparisons/terraform/terminology.md +++ /dev/null @@ -1,75 +0,0 @@ ---- -title_tag: "Pulumi vs. Terraform: Terminology and Commands" -meta_desc: Many of the terms you may know from working with Terraform have direct equivalents in Pulumi. Here is a list of common terms and how they relate to Pulumi. -title: Pulumi equivalents -h1: Pulumi terms & command equivalents -meta_image: /images/docs/meta-images/docs-meta.png -menu: - iac: - name: Pulumi terminology - parent: iac-comparisons-terraform - weight: 2 - concepts: - parent: vs-terraform - weight: 1 -aliases: -- /docs/intro/vs/terraform/terminology/ -- /docs/concepts/vs/terraform/terminology/ -- /docs/iac/concepts/vs/terraform/terminology/ ---- - - - -If you're already familiar with Terraform, learning Pulumi terminology and commands is simple. Many of the existing Terraform vocabulary and commands that you already know have direct equivalents in Pulumi. The table below lists common Terraform terms and CLI commands along with their Pulumi equivalents. - -## Terminology - -| Terraform | Pulumi | -| --------- | ------ | -| Workspace | [Stack](/docs/concepts/stack/) | -| Variables | [Stack Config](/docs/concepts/config/) | -| Directory | [Project](/docs/concepts/projects/) | -| Module | [Component](/docs/concepts/resources/components/) | -| Resource | [Resource](/docs/concepts/resources/) | -| Interpolation | [Interpolation](/docs/concepts/inputs-outputs#outputs-and-strings) | -| Run | [Up](/docs/iac/cli/commands/pulumi_up/) | -| Output Values | [Outputs](/docs/concepts/inputs-outputs/) | -| State | [State](/docs/concepts/state/) | -| State Version | [Update Events](/docs/reference/service-rest-api#list-update-events) | -| Backend | [Backend](/docs/concepts/state/) | -| Deposed | [Pending Operations](/docs/support/troubleshooting#interrupted-update-recovery) | - -## Commands - -| Terraform | Pulumi | -| --------- | ------ | -| `init` | `pulumi new` | -| `validate` | Validation is performed with the inherent syntax checking and testing frameworks in the supported programming languages | -| `plan` | `pulumi preview` | -| `apply` | `pulumi up` | -| `destroy` | `pulumi destroy` | -| `console` | Pulumi commands can be evaluated in a standard programming language shell | -| `fmt` | Standard programming language linting tools checks for format and style | -| `force-unlock` | `pulumi cancel` | -| `get` | Reusable modules are directly imported as a library in the programming language | -| `graph` | `pulumi stack graph` | -| `import` | `pulumi import -f resources.json` | -| `login` | `pulumi login` | -| `logout` | `pulumi logout` | -| `output` | `pulumi stack output` | -| `providers` | `pulumi plugin` | -| `refresh` | `pulumi refresh` | -| `show` | `pulumi stack` | -| `state` | `pulumi state` | -| `version` | `pulumi version` | -| `workspace` | `pulumi stack` | diff --git a/content/docs/iac/comparisons/terraform/opentofu.md b/content/what-is/opentofu-vs-terraform.md similarity index 97% rename from content/docs/iac/comparisons/terraform/opentofu.md rename to content/what-is/opentofu-vs-terraform.md index 9748dc77f9ad..50a948a69137 100644 --- a/content/docs/iac/comparisons/terraform/opentofu.md +++ b/content/what-is/opentofu-vs-terraform.md @@ -1,21 +1,13 @@ --- -title_tag: "OpenTofu vs. Terraform" +title: "OpenTofu vs. Terraform" meta_desc: Compare and contrast OpenTofu and Terraform across key features. Learn how they differ and why many teams are migrating to Pulumi. -title: OpenTofu vs. Terraform -h1: OpenTofu vs. Terraform -meta_image: /images/docs/meta-images/docs-meta.png -menu: - iac: - name: OpenTofu vs. Terraform - parent: iac-comparisons-terraform - weight: 2 - concepts: - parent: vs-terraform - weight: 2 +type: what-is +page_title: "OpenTofu vs. Terraform" aliases: - - /docs/intro/vs/terraform/opentofu/ - - /docs/concepts/vs/terraform/opentofu/ - - /docs/iac/concepts/vs/terraform/opentofu/ +- /docs/iac/comparisons/terraform/opentofu/ +- /docs/intro/vs/terraform/opentofu/ +- /docs/concepts/vs/terraform/opentofu/ +- /docs/iac/concepts/vs/terraform/opentofu/ ---