Pulumi YAML

Pulumi supports writing your infrastructure as code using Pulumi YAML. Pulumi YAML is a configuration language designed to make describing infrastructure as simple as possible. It supports managing infrastructure on any cloud, including Azure, AWS, and Google Cloud.

Getting Started

The fastest way to get up and running is to choose from one of the following Getting Started guides:

AWS
Azure
Google Cloud
Kubernetes

Prerequisites

All you need to use Pulumi YAML is the Pulumi CLI.

Example

name: simple-yaml
runtime: yaml
resources:
  my-bucket:
    type: aws:s3:Bucket
    properties:
      website:
        indexDocument: index.html
  index.html:
    type: aws:s3:BucketObject
    properties:
      bucket: ${my-bucket}
      source:
        Fn::StringAsset: <h1>Hello, world!</h1>
      acl: public-read
      contentType: text/html
outputs:
  bucketEndpoint: http://${my-bucket.websiteEndpoint}

Further examples are given in the Pulumi YAML GitHub repository. The specification for Pulumi YAML documents is in the Pulumi YAML reference.

Templates

The fastest way to start a new project is to use a template. The template will initialize a Pulumi project and set up starter resources for the chosen cloud. The yaml template is cloud agnostic.

  • pulumi new aws-yaml: creates a starter AWS Pulumi YAML project
  • pulumi new azure-yaml: creates a starter Azure Pulumi YAML project
  • pulumi new gcp-yaml: creates a starter Google Cloud Pulumi YAML project
  • pulumi new kubernetes-yaml: creates a starter Kubernetes Pulumi YAML project

Pulumi Programming Model

The Pulumi programming model defines the core concepts you will use when creating infrastructure as code programs using Pulumi. Architecture & Concepts describes these concepts with examples available in all supported languages, including Pulumi YAML.

To learn how the Pulumi Programming Model is implemented for Pulumi YAML, refer to the Pulumi YAML Reference Guide.

Compiler support

Pulumi YAML includes native support for languages that compile to YAML/JSON via the compiler runtime option.

name: generated-from-cue
runtime:
  name: yaml
  options:
    compiler: cue export

Pulumi will run whatever program and arguments are specified in compiler and interpret the output as a Pulumi YAML program.