Skip to content

pulumi/pulumi-yaml

Folders and files

NameName
Last commit message
Last commit date

Latest commit

83b08d8 · Mar 20, 2025
Mar 19, 2025
Feb 27, 2025
Mar 20, 2025
Aug 19, 2024
Mar 19, 2025
Mar 18, 2025
Mar 12, 2025
Oct 8, 2022
Oct 10, 2024
Dec 12, 2024
Mar 18, 2025
Mar 12, 2025
Oct 8, 2024
Feb 18, 2025
Mar 6, 2025
Feb 18, 2025
May 18, 2022
Dec 6, 2024
Mar 28, 2024
Sep 4, 2023
Mar 19, 2025
Mar 19, 2025
Feb 21, 2025

Repository files navigation

PulumiYAML

A YAML (and JSON) language provider for Pulumi.

Examples

See examples dir for tested examples.

The Pulumi Getting Started:

name: simple-yaml
runtime: yaml
resources:
  my-bucket:
    type: aws:s3:Bucket
    properties:
      website:
        indexDocument: index.html
  # The ownershipControls and publicAccessBlock resources are required as of April 2023
  # https://aws.amazon.com/blogs/aws/heads-up-amazon-s3-security-changes-are-coming-in-april-of-2023/
  ownershipControls:
    type: aws:s3:BucketOwnershipControls
    properties:
      bucket: ${my-bucket}
      rule:
        objectOwnership: ObjectWriter
  publicAccessBlock:
    type: aws:s3:BucketPublicAccessBlock
    properties:
      bucket: ${my-bucket}
      blockPublicAcls: false
  index.html:
    type: aws:s3:BucketObject
    properties:
      bucket: ${my-bucket}
      source:
        fn::stringAsset: <h1>Hello, world!</h1>
      acl: public-read
      contentType: text/html
    options:
      dependsOn:
        - ${ownershipControls}
outputs:
  bucketEndpoint: http://${my-bucket.websiteEndpoint}

Webserver + kitchen sink (providers, config, resource options, invokes, interpolations):

name: webserver
runtime: yaml
description: Basic example of an AWS web server accessible over HTTP
configuration:
  InstanceType:
    default: t3.micro
variables:
  AmazonLinuxAmi:
    fn::invoke:
      function: aws:ec2:getAmi
      arguments:
        filters:
          - name: name
            values: ["amzn2-ami-hvm-2.0.20231218.0-x86_64-ebs"]
        owners: ["137112412989"]
        mostRecent: true
      return: id
resources:
  WebSecGrp:
    type: aws:ec2:SecurityGroup
    properties:
      ingress:
        - protocol: tcp
          fromPort: 80
          toPort: 80
          cidrBlocks: ["0.0.0.0/0"]
    protect: true
  WebServer:
    type: aws:ec2:Instance
    properties:
      instanceType: ${InstanceType}
      ami: ${AmazonLinuxAmi}
      userData: |-
        #!/bin/bash
        echo 'Hello, World from ${WebSecGrp.arn}!' > index.html
        nohup python -m SimpleHTTPServer 80 &
      vpcSecurityGroupIds:
        - ${WebSecGrp}
  UsEast2Provider:
    type: pulumi:providers:aws
    properties:
      region: us-east-2
  MyBucket:
    type: aws:s3:Bucket
    options:
      provider: ${UsEast2Provider}
outputs:
  InstanceId: ${WebServer.id}
  PublicIp: ${WebServer.publicIp}
  PublicHostName: ${WebServer.publicDns}

Spec

The specification for the Pulumi YAML format, and documentation for built-in functions, is in the Pulumi YAML reference.

Contribute to the specification by editing the markdown file in pulumi/pulumi-hugo.