Beyond HCL/YAML
Terraform (HCL), CloudFormation (YAML/JSON), ARM templates (JSON) are dedicated DSLs: expressive but limited in abstraction, reuse, testing. For complex operations, a Turing-complete language with loops, conditionals, modules, tests, refactoring is needed.
The release
Pulumi is founded in 2017 by Joe Duffy (ex-Microsoft, .NET Core architect) and Eric Rudder. Version 1.0 published on 4 September 2019. Apache 2.0 licence for the core. Written in Go, runtime for many languages.
Supported languages
- TypeScript / JavaScript
- Python
- Go
- C# / F# / VB (.NET)
- Java
- YAML (for those who want declarative style)
import * as aws from "@pulumi/aws";
const bucket = new aws.s3.Bucket("my-bucket", {
acl: "private",
tags: { Environment: "prod" }
});
export const bucketName = bucket.id;
Features
- Real code — classes, functions, modules, native package manager
- Type safety — schema-based
- Multi-cloud — AWS, Azure, GCP, Kubernetes, Cloudflare, Datadog, MongoDB Atlas
- Terraform provider bridge — reuses all Terraform providers
- State backend — Pulumi Cloud (managed), S3, Azure Blob, GCS, self-hosted
- Stacks — environments (dev/staging/prod) with separate config
- Policy as Code — CrossGuard with OPA/Rego or TS
- Automation API — Pulumi as library, not just CLI
Terraform vs Pulumi
| Terraform | Pulumi | |
|---|---|---|
| Language | HCL | TS/Python/Go/C#/Java |
| Provider ecosystem | Original | Bridge + native |
| State | Terraform Cloud, local, S3 | Pulumi Cloud, S3, etc. |
| Modularity | HCL modules | Language packages |
| Testing | terratest (Go) | native unit test + property test |
| Core licence | MPL 2.0 | Apache 2.0 |
In the Italian context
Pulumi is entering Italian full-stack TypeScript/Python teams as an alternative to Terraform: cloud-native startups, fintech with policy as code, platform engineering at large companies, B2B SaaS with multi-client deploys via Automation API.
References: Pulumi 1.0 (4 September 2019). Joe Duffy, Eric Rudder. Apache 2.0 licence (core). Multi-language: TS, Python, Go, C#, Java. Terraform provider bridge. Automation API.