Transitioning to Pulumi for Python-native provisioning
Learn how to migrate from Terraform to Pulumi using the HCL engine and Python-native code. Discover how Atlassian's Bitbucket team achieved a 50% reduction in maintenance time using Pulumi's scalable infrastructure-as-code platform.
Pulumi 3.259.0 released in August 2026. I find the migration from Terraform to Pulumi easier because Pulumi allows you to keep your HCL files by using the Pulumi HCL engine. This engine requires Pulumi CLI 3.256.0 or later to run unmodified .tf files. You can also point existing Terraform code to Pulumi Cloud as a remote state backend. This configuration uses the remote block at tf.pulumi.com for encrypted storage and update history. I find the decision to use Pulumi best for teams who prioritize software engineering patterns over domain-specific languages. While HashiCorp moved Terraform to a Business Source License in August 2023, Pulumi continues to use general-purpose languages to manage cloud resources across many major providers such as AWS, Azure, and Google Cloud. This flexibility allows you to manage multi-cloud environments using one program. The enhanced Components feature includes a streamlined API with less boilerplate and improved type safety. Such modularity helps enforce configuration patterns and dependencies in code. Organizations can also use Pulumi to define policy as code, which helps enforce rules before a deployment ships.
Scaling with Components and Managed State
Pulumi provides reusable building blocks that encapsulate cloud infrastructure. These components are defined as classes that extend the ComponentResource base class. Using these components reduces code duplication and helps organizations enforce consistency through standard patterns. I find that this makes onboarding new team members easier since they can use pre-built constructs instead of learning every infrastructure detail.
| Plan | Users | Resource Limit | Price |
|---|---|---|---|
| Individual | 1 | Unlimited | $0 |
| Team | Up to 10 | Up to 2,000 | $40/month |
| Enterprise | Variable | Variable | Contact sales |
Pulumi maintains 1,800 providers, which is a smaller selection than the 4,800 providers available in the Terraform registry. I think this gap is a problem for teams that rely on niche SaaS tools. You can use the pulumi-terraform-bridge project to bridge Terraform providers into Pulumi. This bridge translates Terraform provider schemas into Pulumi-native SDKs. I find that Pulumi’s pricing model is much more predictable than the resource-based model used by Terraform Cloud when managing large cloud estates. The Individual plan remains free for one user with 500 deployment minutes and free state management via Pulumi Cloud. For growing teams, the Team plan costs $40 per month for up to 10 users and includes up to 2,000 resources for their infrastructure. Pulumi also provides a Pulumi for Startups program which gives early-stage, funded companies discounted access to its Team and Enterprise platforms for their business needs.
Developer Productivity and Real-World Scale
Python developers gain access to loops, conditionals, and functions within their infrastructure code. I find that using real programming languages eliminates the need to learn a new configuration language. You can use the same unit tests and linters that your application developers use in their existing CI/CD pipelines. This approach differs from the AWS CDK, which is a transpiler that converts code into CloudFormation YAML. Pulumi operates as a runtime that interacts directly with the deployment engine. BMW manages more than 20,000 cloud resources with Python-based infrastructure code, and Wiz manages over a million resources through Pulumi’s Automation API and Kubernetes operator. Atlassian’s Bitbucket team reported a 50% reduction in infrastructure maintenance time after they adopted Pulumi to manage their production stacks. I find that the ability to use existing package managers and IDE autocomplete makes the developer experience much smoother for engineers working in Python. Pulumi’s AWS provider is auto-generated from the AWS CloudFormation spec and typically covers new services within 48 hours of their announcement. However, Pulumi’s provider registry is significantly smaller than Terraform’s, which remains a disadvantage for some organizations who rely on niche SaaS tools. The Automation API allows developers to write tools that can provision and configure infrastructure for each customer of a SaaS application. This capability turns Pulumi into a library that can be called directly from other applications. I find this functionality extremely useful for building internal developer platforms. How will Pulumi scale its registry to match the 4,800 providers seen in Terraform?