Pulumi IaC

Infrastructure as Code
in any Programming Language

Build and ship infrastructure faster using languages you know and love. Use Pulumi’s open source SDK to provision infrastructure on any cloud.

Author in any language, deploy to any cloud

Pulumi Infrastructure as Code Engine

Author infrastructure as code (IaC) using programming languages you know and love – including TypeScript/JavaScript, Python, Go, C#, Java, and YAML. Deploy to 170+ providers like AWS, Azure, Google Cloud, and Kubernetes.

Pulumi code being written in TypeScript showing autocomplete for creating a new S3 bucket Pulumi code being written in Python showing autocomplete for creating a new S3 bucket Pulumi code being written in GO showing autocomplete for creating a new S3 bucket Pulumi code being written in C# showing autocomplete for creating a new S3 bucket Pulumi code being written in Java showing autocomplete for creating a new S3 bucket Pulumi code being written in YAML showing autocomplete for creating a new S3 bucket
Code faster

Write infrastructure code in TypeScript, JavaScript, Python, Go, .NET, Java, and YAML using your IDE and any language ecosystem tools.

Build on any cloud

Access the full breadth of services in AWS, Azure, GCP, and 170+ providers through a complete and consistent SDK interface.

Preview and test changes

Test and validate infrastructure with standard unit test frameworks and integration tests. Preview changes before deploying.

Build infrastructure faster with reusable components

Pulumi Packages

Build and reuse higher-level abstractions for cloud architectures with multi-language Pulumi Packages. Distribute the packages through repositories or package managers so your team members can reuse them.

import * as eks from "@pulumi/eks";

// Create an EKS cluster with the default configuration.
const cluster = new eks.Cluster("eks-cluster");

// Export the cluster's kubeconfig.
export const kubeconfig = cluster.kubeconfig;
import pulumi
import pulumi_eks as eks

# Create an EKS cluster with the default configuration.
cluster = eks.Cluster("eks-cluster")

# Export the cluster's kubeconfig.
pulumi.export("kubeconfig", cluster.kubeconfig)
package main

import (
  "github.com/pulumi/pulumi-eks/sdk/go/eks"
  "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
  pulumi.Run(func(ctx *pulumi.Context) error {
    // Create an EKS cluster with default settings.
    cluster, err := eks.NewCluster(ctx, "eks-cluster", nil)
    if err != nil {
      return err
    }

    // Export the cluster's kubeconfig.
    ctx.Export("kubeconfig", cluster.Kubeconfig)
    return nil
  })
}
using System.Collections.Generic;
using Pulumi;
using Pulumi.Eks;

await Deployment.RunAsync(() =>
{
  // Create an EKS cluster with default settings.
  var cluster = new Cluster("eks-cluster");

  // Export the cluster's kubeconfig.
  return new Dictionary<string, object?>
  {
    ["kubeconfig"] = cluster.Kubeconfig
  };
});
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.eks.Cluster;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    private static void stack(Context ctx) {
    final var cluster = new Cluster("eks-cluster");
    ctx.export("kubeconfig", cluster.kubeconfig());
  }
}
resources:
  eks-cluster:
    type: eks:Cluster
outputs:
  kubeconfig: ${cluster.kubeconfig}
Native cloud providers

Full API coverage for AWS, Azure, Google Cloud, and Kubernetes with same-day updates.

Crosswalk for AWS

Adopt well-architected best practices for your infrastructure easily with the Crosswalk library.

Cloud Native support

Use a single workflow to manage both Kubernetes resources and infrastructure.

Deliver infrastructure through software delivery pipelines

CI/CD Integrations

Version, review, test, and deploy infrastructure code through the same tools and processes used for your application code.

Pulumi infrastructure as code example
Version and review

Manage infrastructure code in Git and approve changes through pull requests.

Shift left

Get rapid feedback on your code with fast unit tests, and run integration tests against ephemeral infrastructure.

Continuous delivery

Integrate your CI/CD provider with Pulumi or use GitOps to manage Kubernetes clusters.

Open source. Enterprise ready.

Pulumi’s Infrastructure as Code CLI and SDK is an open-source project that’s supported by an active community. We maintain a public roadmap and welcome feedback and contributions.

10,000s

of community members

1,000s

of companies

170+

Cloud and service integrations

The fastest and easiest way to use Pulumi IaC at scale

Pulumi Cloud

A fully-managed service for Pulumi IaC plus so much more. Manage and store infrastructure state & secrets, collaborate within teams, view and search infrastructure, and manage security and compliance using Pulumi Cloud.

Pulumi infrastructure as code example
Pulumi IaC

Utilize open-source IaC in TypeScript, Python, Go, C#, Java and YAML. Build and distribute reusable components for 170+ cloud & SaaS providers.

Pulumi ESC

Centralized secrets management & orchestration. Tame secrets sprawl and configuration complexity securely across all your cloud infrastructure and applications.

Automate deployment workflows

Orchestrate secure deployment workflows through GitHub or an API.

Search and analytics

View resources from any cloud in one place. Search for resources across clouds with simple queries and filters.

Pulumi Automation API

Build custom deployment and CI/CD workflows that integrate with Pulumi Developer Portal, custom portals, or CLIs.

Developer portals

Create internal developer portals to distribute infrastructure templates using Pulumi or the Backstage-plugin.

Identity and access control

Manage teams with SCIM, SAML SSO, GitHub, GitLab, or Atlassian. Set permissions and access tokens.

Policy enforcement

Build policy packs from 150 policies or write your own. Leverage compliance-ready policies for any cloud to increase compliance posture and remediation policies to correct violations.

Audit logs

Track and store user actions and change history with option to export logs.

Getting started

Get started now

Deploy your first app in just five minutes. Follow our tutorials for AWS, Azure, Google Cloud, Kubernetes, and more.

Get Started

Migrating from other tools

Transition from existing infrastructure tools or continue using both. Pulumi has converter tools for Terraform, AWS CloudFormation, Azure Resource Manager, and Kubernetes.

Explore Converter Tools