What Pulumi Does
- Multi-language IaC — TS, Python, Go, C#, Java, YAML
- Multi-cloud — AWS, Azure, GCP, Kubernetes, 140+ providers
- State management — Pulumi Cloud (SaaS), self-hosted, S3, Azure Blob, local file
- Policy as Code — CrossGuard policies in TS/Python
- Secrets — encrypted state and config
- Component Resources — package reusable abstractions
- Automation API — programmatically drive Pulumi
- Import — bring existing cloud resources under Pulumi
- ESC — environments, secrets, configuration service
Architecture
Your program is a regular TS/Python/Go app using Pulumi SDK. At runtime it builds a resource graph. Pulumi engine computes a plan against current state and executes changes via provider plugins (which wrap Terraform providers or native cloud SDKs).
Self-Hosting
Pulumi CLI is open source. State backend options include Pulumi Cloud (managed SaaS) or self-hosted backends (S3, Azure Blob, GCS, local file). For enterprise: Pulumi Cloud Self-Hosted.
Key Features
- Real programming languages
- 140+ cloud providers
- Policy as Code (CrossGuard)
- Component resources for abstraction
- Secrets encryption
- Import existing resources
- Automation API
- Stack references across projects
- Easy testing via unit tests
- Pulumi ESC for environment/secrets management
Comparison
| Tool | Language | State | Provider Count |
|---|---|---|---|
| Pulumi | TS/Py/Go/C# | Managed or self | 140+ |
| Terraform | HCL | tfstate file | 3000+ |
| OpenTofu | HCL (Terraform fork) | tfstate | Same as TF |
| CDK (AWS) | TS/Py/Java/C# | CloudFormation | AWS only |
| Cdktf | TS/Py/Go/C# | tfstate | TF-compatible |
| CloudFormation | YAML/JSON | AWS | AWS only |
FAQ
Q: Pulumi vs Terraform? A: Terraform HCL is a DSL (quick to learn but limited in expressiveness); Pulumi uses real programming languages (complex logic, loops, classes, testing feel more natural). Terraform has a larger ecosystem; Pulumi offers a better developer experience.
Q: Can I write K8s in TypeScript?
A: Yes. @pulumi/kubernetes provides all K8s resource types with strongly-typed autocomplete. Much nicer than YAML.
Q: Where to put state? A: Pulumi Cloud is recommended by default (the free tier is enough for small teams). For fully private setups, use S3/Azure Blob/GCS + encryption-provider.
Sources
- Docs: https://www.pulumi.com/docs
- GitHub: https://github.com/pulumi/pulumi
- License: Apache 2.0