Add walkthrough blog covering state backend, modules, and HCL - #20644
Conversation
Social Media Reviewcontent/blog/terraform-to-pulumi-cloud-hands-on/index.mdX — missingLinkedIn — missingBluesky — missingNo Suggested copyX (232/255 chars):
LinkedIn (628/2950 chars):
Bluesky (288/300 chars):
To apply these suggestions, comment: To re-run the social media review after updates, comment: Updated for commit |
|
Your site preview for commit 9124024 is ready! 🎉 http://www-testing-pulumi-docs-origin-pr-20644-91240246.s3-website.us-west-2.amazonaws.com Changed pages: |
Lighthouse Performance ReportCommit: dcc1bca | Metric definitions
|
Companion walkthrough for the HCL Launch campaign (publishing 2026-08-04): migrate Terraform state to the Pulumi Cloud backend, publish and consume a Terraform module via the Pulumi Cloud registry, and write HCL that runs natively on the Pulumi engine. Draft: still needs 3 screenshots, a feature image, and social copy. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude <noreply@anthropic.com>
Completeness pass on the Terraform/HCL walkthrough: - Link the launch announcement post from the intro. - Migration: back up state first, reassure that only state location changes, and link out for S3/Azure/GCS/HCP/TFE source backends. - Note audit policies (every stack) vs preventative policies (remote runs). - Link the Terraform module registry concept page. - Point HCL readers at `pulumi convert` for moving to a general-purpose language on their own schedule. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Reframe the intro around the three buckets (state backend + remote execution, modules as cross-language Pulumi components, first-class HCL), lead with GA, and pitch it as a brisk end-to-end walkthrough doable with a free account and trial. Link the release page and the announcement post. - Develop the "why HCL": native pulumi/ providers alongside bridged ones, cross-language component/module interop, and the superset point, linking Ian's engine deep-dive. - Sharpen the "why a dynamic module" note. - Warmer open-source (Apache 2.0) close inviting issues and feedback. - Fix dead link /docs/idp/deployments/ -> /docs/deployments/, and soften "audit policies run on every stack" to "can run on any stack." Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Expand HCL and Pulumi ESC on first mention. - Note the module work happens in a separate org from the migrated personal account, to avoid org-context confusion. - Capitalize the product name "Pulumi Policies". Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
41a3ad9 to
9bef009
Compare
Pin the homepage featured slots for the Aug 4 launch: the "Bring Your Terraform Estate Into the Agentic Era" announcement as the hero, followed by the "Emulating Terraform on Pulumi's Engine" deep-dive and this hands-on walkthrough. Slot 4 auto-fills. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Fix dropped-word typos (consume, some teams, seen, a/an) and a broken relative ESC link (add leading slash). - Add descriptive alt text to all four screenshots. - Reword the HCL provider/module line (no "community-supported hashicorp/*"; don't conflate providers with modules). - Tighten the VCS/Deployments walkthrough from four steps to three, keeping every action and the confirm screenshot. - Normalize all shell command lines to a $ prompt for consistency. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Fix dropped/incorrect words (a locally defined module, terraform CLI, workspace name, paste into the prompt, copy your existing state, create a new project), a stray comma, and a doubled phrase in the closing links. Drop the contradictory "bridged" qualifier on the pulumi/aws provider and fix the "community-supported" typo. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
| * [Storing Terraform state in Pulumi Cloud](/docs/iac/get-started/terraform/terraform-state-backend/) | ||
| * [Using Terraform modules in Pulumi](/docs/iac/get-started/terraform/terraform-modules/) | ||
| * [The Pulumi HCL language reference](/docs/iac/languages-sdks/hcl/) | ||
| * [More HCL project templates](/templates/) to get going with a new project easily |
There was a problem hiding this comment.
I don't love these, but the clock ran out and my brain turned to mush, so any suggestions are welcome. 💜
Pre-merge Review — Last updated 2026-08-04T16:05:10ZTip Summary: This PR adds a new hands-on blog post ( Review confidence:
Investigation log
🔍 Verification trail149 claims extracted · 94 verified · 17 unverifiable · 4 contradicted · 2 framing-drift · 3 detector findings
Important Please don't hide, resolve, or delete this comment! It breaks things! 📖 How pre-merge review works — the full lifecycle, short-circuits, and escape hatches. |
continued from previous comment
📊 Editorial balanceSingle-subject post; balance check N/A. 🚨 Outstanding in this PRThese must be resolved or refuted before merging.
|
💡 Pre-existing issues in touched files (optional)No pre-existing issues in touched files. ✅ Resolved since last reviewNo items resolved since the last review. 📜 Review history
Important Please don't hide, resolve, or delete this comment! It breaks things! 📖 How pre-merge review works — the full lifecycle, short-circuits, and escape hatches. |
Add mutual related_posts entries so the launch, engineering, and walkthrough posts each surface the other two in their Related posts block. Also fix a "sign into" -> "sign in to" typo in the walkthrough and tidy the featured-slot comments in blog_home.yaml. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* Blog: "Emulating Terraform on Pulumi's Engine" (#20573) * Draft 0 - half way done * Update feature image for Terraform data model blog post Co-Authored-By: Claude <noreply@anthropic.com> * Draft 1: complete (mostly) * links * Fill in hook mapping table, permalinks, and conclusion Fill the provisioner/condition-to-hook mapping table from the pulumi-hcl source, and correct the replace_triggered_by bullet to match the code: every element feeds replacementTrigger, and resource references also contribute to replaceWith. Replace the illustrative workspace.PackageDescriptor snippets with the pulumirpc.PackageSpec requests that are actually sent, and link to the request-construction code in pulumi-hcl and the latest-version resolution code in the dynamic bridge. Add the concluding section: thesis restated, known gaps, and a call to action to file compatibility issues. * Address review: fix SDK namespace, MLC link, and conclusion typo Use the pulumi namespace in all module-consumption examples; the SDK publishes under pulumi, not pulumi-labs. Point the multi-language components link at its real path under guides/building-extending. Fix a misspelling and missing serial comma in the conclusion. * Bind the precondition hook to beforeUpdate as well Match the TypeScript equivalence example to the mapping table: preconditions run on both create and update. --------- Co-authored-by: Jeff Merrick <jmerrick@pulumi.com> Co-authored-by: Claude <noreply@anthropic.com> * blog: add "Bring Your Terraform Estate Into the Agentic Era" launch post (#20569) * blog: add "Bring Your Terraform Estate Into the Agentic Era" launch post Staged for publication on 2026-08-04 at 9:00 AM Pacific. Announces the GA of Pulumi Cloud as a Terraform state backend, HCL as a first-class Pulumi IaC language, and native Terraform module support, along with the continued HashiCorp transition offers. Follows on from Joe Duffy's December post, "Pulumi for All Your IaC — Including Terraform and HCL," and links back to it as the setup. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> * blog: render 1884x1256 rocket feature image The shared placeholder copied by /new-blog-post is 942x628, which fails the markdown linter's feature-image dimension check. Replace it with a rocket template render (the launch/announcement template) at the required 1884x1256. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> * blog: add social copy for the Terraform launch post Fills the blank twitter/linkedin/bluesky frontmatter fields with the copy drafted by the social-review check. All three tee up the post without delivering the announcement, and deliberately omit the "over 40% of users" stat pending a freshness check before the Aug 4 publish date. X 235/255, LinkedIn 692/2950, Bluesky 259/300. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> * blog: apply review feedback from @cnunciato Copy edits for parallelism and clarity in the Terraform backend bullets, plus: - Reframe the interop claim as "Pulumi is now fully interoperable with Terraform and OpenTofu" - Note that remote-by-default plans/applies follow HCP Terraform and Terraform Enterprise behavior - Point the HCL link at the HCL language docs rather than the convert guide - Add a "learn more" docs link at the end of each of the three capability sections - Link "Get started with Pulumi free" to app.pulumi.com/signup Two review questions are left for the author: whether to move the modules section ahead of HCL, and whether to link out to Christian's forthcoming getting-started post. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> * blog: reorder to backend, modules, then HCL Per review feedback, the three capability sections now follow an adoption progression: bring state to Pulumi Cloud, reuse the modules you already have, then write HCL natively. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> * blog: drop Modular from the workshop customer list Leaves BMW and Supabase as the named examples. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> * blog: scope remote-by-default to new Terraform stacks Per the companion docs PR (#20570), new stacks created through the Terraform or OpenTofu CLI default to remote execution; existing stacks enable it with a stack tag. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> * blog: align LinkedIn copy with remote-execution scoping Drops "existing" so the claim holds for both new stacks (remote by default) and existing ones (remote via stack tag). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> * blog: address prose-lint warnings - Drop the third em dash in the intro (Pulumi.EmDashDensity); the intro is the excerpt shown on the blog index - Remove difficulty qualifiers "just like" and "easily" (Pulumi.Difficulty, STYLE-GUIDE.md Inclusive Language) - Drop the weasel "very" from "a very clear ROI" Keeps "it just works" — an idiom about the provider bridge, not a judgment about the reader's effort. Remaining warnings are generic write-good wordiness hits, left as-is. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> * blog: update feature image for Terraform estate post Co-Authored-By: Claude <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5 <noreply@anthropic.com> Co-authored-by: Jeff Merrick <jmerrick@pulumi.com> * Add walkthrough blog covering state backend, modules, and HCL (#20644) * blog: add hands-on Terraform/HCL/Pulumi Cloud walkthrough (draft) Companion walkthrough for the HCL Launch campaign (publishing 2026-08-04): migrate Terraform state to the Pulumi Cloud backend, publish and consume a Terraform module via the Pulumi Cloud registry, and write HCL that runs natively on the Pulumi engine. Draft: still needs 3 screenshots, a feature image, and social copy. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * blog: add feature image for the Terraform/Pulumi Cloud walkthrough Co-Authored-By: Claude <noreply@anthropic.com> * blog: answer reader questions with brief inline notes and links Completeness pass on the Terraform/HCL walkthrough: - Link the launch announcement post from the intro. - Migration: back up state first, reassure that only state location changes, and link out for S3/Azure/GCS/HCP/TFE source backends. - Note audit policies (every stack) vs preventative policies (remote runs). - Link the Terraform module registry concept page. - Point HCL readers at `pulumi convert` for moving to a general-purpose language on their own schedule. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * blog: sharpen framing and fix doc links per author review - Reframe the intro around the three buckets (state backend + remote execution, modules as cross-language Pulumi components, first-class HCL), lead with GA, and pitch it as a brisk end-to-end walkthrough doable with a free account and trial. Link the release page and the announcement post. - Develop the "why HCL": native pulumi/ providers alongside bridged ones, cross-language component/module interop, and the superset point, linking Ian's engine deep-dive. - Sharpen the "why a dynamic module" note. - Warmer open-source (Apache 2.0) close inviting issues and feedback. - Fix dead link /docs/idp/deployments/ -> /docs/deployments/, and soften "audit policies run on every stack" to "can run on any stack." Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * blog: apply docs-review fixes (acronyms, org context, product name) - Expand HCL and Pulumi ESC on first mention. - Note the module work happens in a separate org from the migrated personal account, to avoid org-context confusion. - Capitalize the product name "Pulumi Policies". Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * blog: feature the Terraform launch posts on the homepage Pin the homepage featured slots for the Aug 4 launch: the "Bring Your Terraform Estate Into the Agentic Era" announcement as the hero, followed by the "Emulating Terraform on Pulumi's Engine" deep-dive and this hands-on walkthrough. Slot 4 auto-fills. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * Revisions * blog: copyedit pass, fix ESC link, tighten deployments steps - Fix dropped-word typos (consume, some teams, seen, a/an) and a broken relative ESC link (add leading slash). - Add descriptive alt text to all four screenshots. - Reword the HCL provider/module line (no "community-supported hashicorp/*"; don't conflate providers with modules). - Tighten the VCS/Deployments walkthrough from four steps to three, keeping every action and the confirm screenshot. - Normalize all shell command lines to a $ prompt for consistency. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * Almost there * blog: typo and grammar scrub Fix dropped/incorrect words (a locally defined module, terraform CLI, workspace name, paste into the prompt, copy your existing state, create a new project), a stray comma, and a doubled phrase in the closing links. Drop the contradictory "bridged" qualifier on the pulumi/aws provider and fix the "community-supported" typo. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * blog: cross-link the three Terraform launch posts as related Add mutual related_posts entries so the launch, engineering, and walkthrough posts each surface the other two in their Related posts block. Also fix a "sign into" -> "sign in to" typo in the walkthrough and tidy the featured-slot comments in blog_home.yaml. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * Meta --------- Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com> Co-authored-by: Jeff Merrick <jmerrick@pulumi.com> * Add the August 2026 Terraform and HCL release page (#20617) * Add the August 2026 Terraform and HCL release page Adds /releases/terraform-and-hcl/, a smaller launch page covering the three capabilities announced in the Terraform/HCL launch post: Pulumi Cloud as a Terraform state backend, HCL as a first-class Pulumi language, and native Terraform module support. Every card traces to that post; the page reuses the existing releases layout, so it's frontmatter-only apart from the two partial changes below. Dated 2026-08-04 to match the launch post, so it won't build until then. Extends layouts/partials/releases/hero-card.html with an optional hero_image_max_height, which sizes hero art by height instead of width. The May page's hero is square (427x433) while this one is wide (761x419), so a shared max-width rendered the new art at roughly half the height. The heading now also renders as raw HTML so a <br> can control where it wraps. Fixes three layout issues in layouts/partials/releases/release-item.html that affect every card on /releases/: the feature image was flush to the card's left edge on mobile, images were vertically centered rather than sitting on the card's bottom edge, and cards with differently-proportioned artwork came out at different heights. The image column now holds a fixed 600/497 aspect, so cards line up at any viewport width rather than at one fixed breakpoint. Co-Authored-By: Claude <noreply@anthropic.com> * Update the Terraform and HCL release feature image Swaps in revised artwork for the /releases/ list card. Same 600x399 viewBox as before, so the card layout is unaffected. Co-Authored-By: Claude <noreply@anthropic.com> * Rename the Terraform and HCL release page slug Moves the page to /releases/terraform-state-backend-modules-hcl/, naming the three shipped capabilities directly. No alias needed: the page is future-dated and unmerged, so the old URL has never been live and nothing links to it. Co-Authored-By: Claude <noreply@anthropic.com> * Add the social card for the Terraform and HCL release page Adds the hand-made 1200x628 card and points meta_image at it. Lives under static/ rather than assets/fingerprinted/, since a non-blog meta_image resolves as a raw path. Co-Authored-By: Claude <noreply@anthropic.com> * Reorder release sections (modules before HCL) and point homepage badge at the release page Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * Add launch banner for the Terraform state, modules, and HCL release Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * Swap access-control card for remote execution and refine release copy Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * Finalize release page: module and HCL cards, copy fixes, badge, and banner Adds module and HCL cards to the August 2026 release page, links the newly-landed walkthrough post, and applies a copy/typo pass. Updates the homepage badge and launch-banner text to match. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * Refine release hero description copy Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> --------- Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Christian Nunciato <chris@nunciato.org> * Use @pulumi/hcl and pulumi/pulumi-hcl as canonical HCL references Update the Terraform-to-Pulumi-Cloud walkthrough to install and import the @pulumi/hcl package (the labs-scoped @pulumi-labs/hcl has graduated to the @pulumi scope), so it agrees with the engineering deep-dive post. Also correct the docs-review verify-claims reference: Pulumi HCL now lives under pulumi/pulumi-hcl, not pulumi-labs/pulumi-hcl. Point-in-time -labs references in existing blog posts are left as-is. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> --------- Co-authored-by: Ian Wahbe <me@iwahbe.com> Co-authored-by: Jeff Merrick <jmerrick@pulumi.com> Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Daniel Perlovsky <dperlovsky@pulumi.com>

Companion walkthrough for the HCL Launch campaign (publishing 2026-08-04), tied to the new Terraform state backend, Terraform module registry, and native HCL support. Sits alongside the launch blog (#20569) and the engineering deep-dives (#20573, #20445) as the hands-on, do-it-yourself piece.
The post walks through, one step at a time:
tf.pulumi.com), including remote execution and ESC credentials.Facts and commands were reconciled against the queued docs PRs: the state backend + remote-execution pages (#20570), the module-registry concept page (#19453), and the HCL language reference.
Still to do before ready-for-review
<!-- SCREENSHOT -->comments): migrated stack, registry module page, VCS Confirm/Discard./blog-feature-image);feature_imageis commented out until then./draft-social-post)./docs-reviewpass, then flipdraft: false.~1,740 words,
draft: true. Author:christian-nunciato.🤖 Generated with Claude Code
Closes https://github.com/pulumi/marketing/issues/1782.