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:Bucket
properties:
website:
indexDocument: 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}
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 projectpulumi new azure-yaml
: creates a starter Azure Pulumi YAML projectpulumi new gcp-yaml
: creates a starter Google Cloud Pulumi YAML projectpulumi 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
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.
Thank you for your feedback!
If you have a question about how to use Pulumi, reach out in Community Slack.
Open an issue on GitHub to report a problem or suggest an improvement.