Pulumi 1.0: IaC with real programming languages

Pulumi 1.0 (September 2019) by Joe Duffy and Eric Rudder: Infrastructure as Code with TypeScript, Python, Go, C#, Java instead of DSL. Multi-cloud, managed state, Terraform provider compatibility. Modern alternative to Terraform.

Open Source PulumiIaCTypeScriptPythonMulti-cloudOpen Source

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

TerraformPulumi
LanguageHCLTS/Python/Go/C#/Java
Provider ecosystemOriginalBridge + native
StateTerraform Cloud, local, S3Pulumi Cloud, S3, etc.
ModularityHCL modulesLanguage packages
Testingterratest (Go)native unit test + property test
Core licenceMPL 2.0Apache 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.

Need support? Under attack? Service Status
Need support? Under attack? Service Status