Skip to content

[registry] Docs and launch blog for Terraform modules in the Pulumi Cloud registry#19453

Draft
fnune wants to merge 5 commits into
masterfrom
fnune/registry/tf-modules-docs
Draft

[registry] Docs and launch blog for Terraform modules in the Pulumi Cloud registry#19453
fnune wants to merge 5 commits into
masterfrom
fnune/registry/tf-modules-docs

Conversation

@fnune

@fnune fnune commented Jun 1, 2026

Copy link
Copy Markdown
Member

Documentation and a launch blog post for hosting Terraform modules in the Pulumi Cloud registry.

Docs

  • New concept page under IDP describing how Pulumi Cloud hosts Terraform modules: authentication via terraform login, the three HCP-compatible publish paths (go-tfe, the hashicorp/tfe provider, the tfc-workflows-github Action), the standard module layout extracted at publish, migrating from HCP Terraform, and consumption from OpenTofu / Terraform and from a Pulumi program.
  • Cross-link from the existing "Use a Terraform Module in Pulumi" guide so consumers landing on the IaC guide can discover the Pulumi-Cloud-hosted path.

Blog

  • Announcement post under content/blog/terraform-modules-pulumi-cloud-registry/, with canonical_url pointing at the concept page. Feature and meta images generated with the /blog-meta-image tooling (Terraform logo variant).

Notes

  • The registry host is the canonical tf.pulumi.com (per pulumi/pulumi-service#44889), not app.pulumi.com. app.pulumi.com is the console only.
  • Migration guidance lives in the concept page, including the one naming rule that differs from HCP Terraform: module names reject underscores (HCP hosts names like control_tower_account_factory; rename to hyphens before publishing).

Design doc: https://app.notion.com/p/Terraform-module-hosting-in-the-Pulumi-Cloud-registry-372fdbdf1cce801ea7a3f4946c1e4154

Fixes https://github.com/pulumi/pulumi-service/issues/44080

Test plan

  • Run the docs site locally (make serve) and confirm the new "Terraform Modules" entry appears under the IDP Concepts menu and renders.
  • Open /blog/terraform-modules-pulumi-cloud-registry/ locally and confirm the post renders, including the meta image and the og:image social preview.
  • Click through the internal links on both pages to confirm the targets exist.
  • Confirm every module address and login example uses tf.pulumi.com.

…stry

Add a new concept page under IDP describing how Pulumi Cloud hosts Terraform modules: authentication via `terraform login`, the three HCP-compatible publish paths (go-tfe, hashicorp/tfe provider, tfc-workflows-github Action), the standard module layout we extract from at publish, consumption from OpenTofu / Terraform via the Module Registry Protocol, and consumption from a Pulumi program via `pulumi package add terraform-module`.

Cross-link from the existing "Use a Terraform Module in Pulumi" guide so consumers landing on the IaC guide can discover the Pulumi-Cloud-hosted path.

Design doc: https://app.notion.com/p/Terraform-module-hosting-in-the-Pulumi-Cloud-registry-372fdbdf1cce801ea7a3f4946c1e4154

Fixes pulumi/pulumi-service#44080

## Test plan

- Render the IDP concepts section locally and confirm the new "Terraform Modules" entry appears under the Concepts menu
- Click through every internal link in the new page to confirm targets exist
@pulumi-bot

pulumi-bot commented Jun 1, 2026

Copy link
Copy Markdown
Collaborator

Add the announcement blog post for hosting Terraform modules in the
Pulumi Cloud registry, and correct the registry host across the docs and
blog from app.pulumi.com to the canonical tf.pulumi.com (per
pulumi/pulumi-service#44889; app.pulumi.com is the console only).

Move the migration guidance out of the blog and into the concept page,
and document the one naming rule that differs from HCP Terraform: module
names reject underscores.
@fnune fnune changed the title [registry] Document Terraform module hosting in the Pulumi Cloud registry [registry] Docs and launch blog for Terraform modules in the Pulumi Cloud registry Jun 18, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Social Media Review

content/blog/terraform-modules-pulumi-cloud-registry/index.md

X — FAIL

  • Single paragraph — X requires at least 2 paragraphs separated by a blank line

LinkedIn — PASS

Bluesky — missing


Suggested copy

X (178/255 chars) — minimum change: blank line inserted before final sentence:

The Pulumi Cloud registry now hosts Terraform modules. Publish with the HCP tooling you already use, and consume from OpenTofu, Terraform, or Pulumi.

Just point at tf.pulumi.com.

Bluesky (280/300 chars) — drafted from the article:

The Pulumi Cloud registry now hosts Terraform modules. It's wire-compatible with HCP Terraform's private registry, so your existing publish tooling works unchanged.

Consume from a .tf file with tofu init or from a Pulumi program with pulumi package add — no new tooling required.


Suggestions (advisory)

These are stylistic notes — they don't block the post.

LinkedIn

  • Missing pointer — post ends on a plan-tier detail ("Reading and listing modules works on any plan"); add a line signaling there's more in the article
  • Curiosity gap: post names both consumption paths (tofu init, pulumi package add) and the core mechanism (wire-compatible, just change the host) — the article has little left to reveal

Updated for commit bd30250e8ff227f8c9dbdb831687682ef27d347e (short: bd30250) at 2026-06-18 15:18 UTC.

The TFE discovery document (cmd/service/api/tfe_discover.go) advertises
tfe.v2, state.v2, and modules.v1 but no login.v1, so terraform login
against tf.pulumi.com is unsupported.

Document the real auth instead: a Pulumi access token is the bearer for
publish (go-tfe, the tfe provider, the GitHub Action), pulumi login for
pulumi package add, and TF_TOKEN_tf_pulumi_com for plain OpenTofu or
Terraform.
- Remove the tfc-workflows-github Action from the publish and delete
  paths and from the auth list. create-run triggers a run; it does not
  touch the module registry. The testbed only exercised go-tfe and the
  tfe provider.
- Consume from Pulumi: drop the rejected "CLI injects TF_TOKEN_<host>"
  detail. After pulumi login the provider resolves the module with your
  Pulumi credentials. Note that terraform-module is a parameterized
  provider and name its parameters.
- Module layout: parse all root .tf files (any filenames); examples and
  README are captured at publish, not rendered (console rendering is not
  built yet).
- Say packages, not components.
…ckend

Apply the Pulumi brand writing-style rules: sentence case for the
concept page title_tag/title/h1 and no over-capitalized concepts, so
"Terraform modules in the Pulumi Cloud registry" rather than title case.
Drop the "just" minimizer from the migration line.

Link "keep Terraform state in Pulumi Cloud" in the blog to the state
backend guide.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants