Logo
Logo

Terraform is Dead, Why you should start using Pulumi.

Infrastructure as Code (IaC) has become the standard for modern cloud-native development. For years, Terraform has been the de facto choice. It’s mature, declarative, and has a large community. But in recent years, Pulumi has been gaining traction and for good reasons.

Pulumi and Terraform both aim to solve the same problem: defining and provisioning cloud infrastructure as code. But they take very different paths to get there. Pulumi aligns more with modern software development, while Terraform follows a more traditional configuration-driven approach.
If you’re trying to decide between the two, this guide will walk you through how they compare in language support, flexibility, secrets, developer experience, and more.

Language Support: Real Code vs HCL

Terraform uses its own language, HCL (HashiCorp Configuration Language). It’s easy to learn and declarative great for defining infrastructure at a high level. But when your infrastructure logic grows complex (e.g. dynamic environments, looping over resources, conditional logic), HCL starts to show its limits.
Pulumi, on the other hand, uses general-purpose programming languages like TypeScript, Python, Go, C#, and Java. This gives you full access to programming constructs variables, conditionals, loops, functions, and modules as well as your language’s standard library and ecosystem.
Why it matters:
With Pulumi, you can model complex infrastructure in a clean, testable way without relying on hacky workarounds.
🔗 Pulumi language support
🔗 Terraform HCL docs

Flexibility and Control

Pulumi gives you significantly more control over your infrastructure workflows. Want to fetch a secret from an API before deploying resources? Or validate a configuration dynamically based on another system? With Pulumi, you can just write the logic directly in your code.
Terraform can handle some of these use cases but often only with external provisioners, templating hacks, or shell scripting. The result? More fragile pipelines and more glue code.
Pulumi examples of flexibility:

  • Load config from an external API

  • Use environment-specific logic with simple if statements

  • Integrate CI/CD using official SDKs

Secrets and Encryption

Managing secrets securely is non-negotiable.
Terraform stores all values, including secrets, in its state file and unless you configure encryption (e.g. via S3 + KMS), they’re stored in plaintext. It also lacks a first-class secret type, so developers must be extra careful not to expose sensitive values in logs or outputs.
Pulumi treats secrets as first-class citizens. You can wrap any value in pulumi.secret(), and Pulumi will automatically encrypt it at rest and mask it in logs and outputs. It works out of the box with Pulumi Cloud or self-managed backends like AWS S3 or Google Cloud Storage and supports your own KMS keys.
🔗 Pulumi Secrets Guide
🔗 Terraform Sensitive Data Docs

Developer Experience

Pulumi fits naturally into the software development lifecycle. You can use your existing tooling from code editors to test frameworks to CI/CD pipelines. Your infrastructure becomes part of your codebase, not something siloed off.
With Pulumi you get:

  • IDE autocompletion, linting, refactoring

  • Unit testing with Jest, Pytest, or Go test

  • CI/CD via GitHub Actions, GitLab, or Pulumi Deployments
    Terraform, by contrast, leans heavily on static files and CLI-based workflows. Tools like tflint, tfsec, and terragrunt help improve this but they’re often extra layers instead of core features.

State Management

Both tools track infrastructure state, but the options and experience vary.
Terraform uses remote backends (like S3 or Terraform Cloud) for team collaboration. Terraform Cloud offers additional features like role-based access control, policy-as-code, and audit logging but only in higher pricing tiers.
Pulumi supports multiple state backends: Pulumi Cloud (with built-in RBAC, history, and previews), or self-managed storage like S3, GCS, or local files. It also makes state import/export simple and works well in air-gapped environments.

Ecosystem and Providers

Terraform has a clear edge when it comes to ecosystem maturity. It has a massive number of providers, modules, and community support. Pulumi recognizes this and has built a Terraform bridge to support nearly every Terraform provider.
That means if something exists in Terraform, chances are you can use it in Pulumi too. On top of that, Pulumi is also building its own native providers with strongly typed APIs.
🔗 Pulumi Provider Registry
🔗 Terraform Provider Registry

Real-World Example: GCP Project Per Environment

Let’s say you want to spin up a GCP project for each environment with different IAM roles, linked billing accounts, and conditional behavior.
Terraform approach:
Use count, for_each, locals, and complex module logic. It’s possible, but becomes hard to maintain as logic grows.
Pulumi approach:
Just use a for loop with some if statements in your preferred language. Easier to write, read, and test and works just like regular code.

Learning Curve

Terraform is easier to pick up for non-developers. Its declarative syntax is readable and works well for simpler use cases.
Pulumi requires some programming knowledge but pays off quickly. Teams that already write code benefit from faster iteration, reusable logic, and easier testing.

Final Thoughts

Terraform is still an industry-standard tool and works great for many teams. especially those already invested in its ecosystem. But as cloud infrastructure becomes more complex and developer-driven, Pulumi presents a compelling alternative.
Pulumi’s use of real languages, better developer workflows, and built-in secrets management give it a clear edge for modern teams building scalable infrastructure as code.

Need Help Deciding?

At Conro, we specialize in helping teams adopt Pulumi or improve their existing Terraform workflows. Whether you’re migrating, building from scratch, or just exploring the trade-offs. We can help you make the right decision.
Let’s talk about your goals.

Designed to help companies design, build & improve their Google Cloud.

Designed to help companies design, build & improve their Google Cloud.

Designed to help companies design, build & improve their Google Cloud.

Create a free website with Framer, the website builder loved by startups, designers and agencies.