Pulumi Fundamentals
Pulumi is an infrastructure-as-code tool that defines cloud resources with familiar programming languages. It evaluates your program, compares the desired resources with a stack's recorded state, and coordinates the changes through provider plugins.
itInfrastructure and operations | OpenSkills.info
Course pathWalk it in order
Look it upDip in anytime
Go furtherLeaves this page
Don't Panic
Don't Panic — Pulumi Fundamentals
Pulumi is infrastructure as code wearing a programmer's coat. You write a program that describes resources, and it works out which cloud or software-service changes would make those resources real. This is less mysterious than it sounds. It is also more consequential than a loop that prints a greeting.
The machinery has five cooperating characters. The program declares the desired resources. The engine runs it and builds a graph. A provider turns graph operations into service API calls. A stack is one separately configured deployment, such as development or production. The backend keeps the stack's state, which is the memory linking declarations to real resources. It is a filing cabinet with opinions.
The important trick is the Output. A resource can produce a value, such as an ID, only after deployment. Passing that output into another resource's input tells Pulumi both what value will be needed and which resource must come first. Do not wrestle it into an ordinary string during program evaluation. It is an eventual value carrying dependency information, not a string that has been late for a meeting.
The normal ritual is deliberately boring: edit the program or stack configuration, run pulumi preview, read the proposed creates, updates, replacements, and deletes, then run pulumi up when they match the intended change. Preview changes no stack, but it is a review boundary rather than a promise. Provider behavior, permissions, unknown values, and changes made elsewhere can still alter the outcome.
State deserves respect without becoming the star of the show. Your program is the design; state connects it to the infrastructure already managed. pulumi refresh reads provider values into that record, but it does not repair the program. If an external change is meant to remain, update the program as well, or a later update may loyally restore its older declaration. Computers are very good at carrying out the last instruction they were given.
The surprise is that names have lifecycle consequences. A logical name contributes to a resource's URN, so a refactor can look like delete-and-create unless an alias preserves identity. Components also help and complicate matters: they package related resources behind inputs and outputs, but the child resources still exist and their previews still need reading.
Read the introduction for the full map of programs, providers, stacks, state, secrets, and lifecycle controls. Use the slides for the relationships at a glance, the cheatsheet for the operational anchors and commands, and the exercise to make two local stacks before any real provider gets involved.
Where this skill leads
Relevant careers
See how this topic contributes to broader role-level skill maps.
Sources
- https://www.pulumi.com/docs/get-started/
Supports
- Pulumi as infrastructure as code using familiar programming languages
- First-project paths for major cloud and Kubernetes providers
- Relationship between Pulumi IaC and the optional Pulumi Cloud service
- https://www.pulumi.com/docs/iac/concepts/projects/
Supports
- Project folder and Pulumi.yaml identity
- Supported project runtimes
- Stack settings file naming and source-control guidance
- https://www.pulumi.com/docs/iac/concepts/stacks/
Supports
- Stack as an isolated and independently configurable program instance
- Multiple stacks per project
- Stack initialization, selection, and listing
- https://www.pulumi.com/docs/iac/concepts/inputs-outputs/
Supports
- Declarative resource graph
- Input and Output semantics
- Output-to-input dependency tracking
- Eventual values and output transformation
- Explicit dependsOn for dependencies absent from data flow
- https://www.pulumi.com/docs/iac/concepts/providers/
Supports
- Provider SDK and executable plugin roles
- Translation of resource operations to service APIs
- Default and explicit provider configuration
- Explicit providers for multiple regions or environments
- https://www.pulumi.com/docs/iac/concepts/state-and-backends/
Supports
- Per-stack state purpose
- Backend coordination and storage role
- Pulumi Cloud as the default managed backend
- Supported DIY backend classes and owner responsibilities
- Cloud credentials excluded from Pulumi state
- Secret encryption in state
- https://www.pulumi.com/docs/reference/state/
Supports
- Refresh updates state rather than program or infrastructure
- Keeping external changes requires a matching program update
- Stack state export and import as advanced operations
- https://www.pulumi.com/docs/iac/concepts/config/
Supports
- Stack-scoped configuration
- Secret configuration methods and encrypted serialization
- Configuration namespaces
- https://www.pulumi.com/docs/iac/cli/commands/pulumi_preview/
Supports
- Preview computes desired state by running the project program
- Preview compares desired allocations with existing state
- Preview shows operations without changing the stack
- https://www.pulumi.com/docs/iac/concepts/resources/options/
Supports
- Protection, aliases, explicit dependencies, ignore changes, import, parent, and provider options
- Resource options change management and lifecycle behavior
- https://www.pulumi.com/docs/iac/concepts/resources/options/aliases/
Supports
- Alias use during logical rename or parent-path refactor
- Identity preservation instead of delete and recreate
- https://www.pulumi.com/docs/iac/concepts/components/
Supports
- Components as logical groups of child resources
- Reusable interfaces and distribution approaches
- Components for organizational infrastructure patterns
- https://github.com/pulumiverse/awesome-pulumi
Supports
- Discovery of Pulumi Local, env zero, and Deskypus
- Curated Pulumi ecosystem categories
- https://docs.localstack.cloud/aws/connecting/infrastructure-as-code/pulumi/
Supports
- Pulumi Local wrapper and manual endpoint configuration
- Local AWS resource deployment through LocalStack
- https://docs.envzero.com/guides/getting-started/getting-started
Supports
- Pulumi support in the env zero infrastructure automation platform
- Managed infrastructure deployment and governance scope
- https://snapcraft.io/deskypus
Supports
- Cross-platform desktop management for Pulumi projects
- https://www.pulumi.com/blog/introducing-pulumi-a-cloud-development-platform/
Supports
- Pulumi launch in June 2018
- Original general-purpose language infrastructure model
- https://www.pulumi.com/blog/pulumi-1-0/
Supports
- Pulumi 1.0 general availability in September 2019
- Declarative resource model and reviewable planned operations
- https://www.pulumi.com/blog/introducing-pulumi-crosswalk-for-aws-the-easiest-way-to-aws/
Supports
- Pulumi Crosswalk for AWS introduction in June 2019
- Higher-level infrastructure components for common AWS patterns
- https://www.pulumi.com/blog/pulumi-2-0/
Supports
- Pulumi 2.0 release in April 2020
- Language SDK expansion, policy as code, and testing capabilities
- https://www.pulumi.com/blog/automation-api/
Supports
- Automation API introduction in October 2020
- Programmatic stack and lifecycle operations through SDKs
- https://www.pulumi.com/blog/pulumi-3-0/
Supports
- Pulumi 3.0 announcement in September 2021
- Multi-language component packages
- https://www.pulumi.com/blog/pulumi-yaml/
Supports
- Pulumi YAML introduction in May 2022
- YAML runtime and its relationship to core Pulumi features
- https://www.pulumi.com/blog/nov-2022-launches
Supports
- Pulumi Deployments announcement in November 2022
- Pulumi YAML general availability
- https://www.pulumi.com/blog/environments-secrets-configurations-management/
Supports
- Pulumi ESC introduction in October 2023
- Environment, secret, and configuration composition
- https://www.pulumi.com/blog/pulumi-esc-ga/
Supports
- Pulumi ESC general availability in September 2024
- https://www.hashicorp.com/products/terraform
Supports
- Terraform as a multi-provider infrastructure automation product
- https://opentofu.org/
Supports
- OpenTofu as an open-source infrastructure-as-code project
- https://aws.amazon.com/cloudformation/
Supports
- AWS CloudFormation as an AWS infrastructure-as-code service
- https://docs.aws.amazon.com/cdk/
Supports
- AWS CDK as a framework for defining AWS infrastructure in code through CloudFormation
