1. Docs
  2. Pulumi IaC
  3. Languages & SDKs
  4. YAML

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.

Prerequisites

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

Example

name: simple-yaml
runtime: yaml
config:
  message:
    default: Hello, world!
    type: string
resources:
  my-bucket:
    type: aws:s3:BucketV2
  my-bucket-website:
    type: aws:s3:BucketWebsiteConfigurationV2
    properties:
      bucket: ${my-bucket.bucket}
      indexDocument:
        suffix: index.html
  ownership-controls:
    type: aws:s3:BucketOwnershipControls
    properties:
      bucket: ${my-bucket.id}
      rule:
        objectOwnership: ObjectWriter
  public-access-block:
    type: aws:s3:BucketPublicAccessBlock
    properties:
      bucket: ${my-bucket.id}
      blockPublicAcls: false
  index.html:
    type: aws:s3:BucketObject
    properties:
      bucket: ${my-bucket}
      source:
        fn::stringAsset: <h1>${message}</h1>
      acl: public-read
      contentType: text/html
    options:
      dependsOn:
        - ${ownership-controls}
        - ${public-access-block}
outputs:
  bucketEndpoint: http://${my-bucket.websiteEndpoint}
Copy
The example is a fully valid and self-contained Pulumi project. You only need one file to create resources in Pulumi YAML.

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

By default, pulumi new provides a number of templates provided by Pulumi, but it can also use your own custom templates.

To learn more about building and working with custom templates, see Custom Templates and the pulumi new docs.

Pulumi Programming Model

The Pulumi programming model defines the core concepts you will use when creating infrastructure as code programs using Pulumi. 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
Copy

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

YAML Packages

The Pulumi Registry houses 100+ YAML packages.

Was this page helpful?

eBook - Recommended Practices for Infrastructure as Code (IaC)