Pulumi Concepts

From NovaOrdis Knowledge Base
Jump to navigation Jump to search

Internal

Overview

Pulumi is an Infrastructure as Code platform that allows using common programming languages, tools, and frameworks, to provision, update, and manage cloud infrastructure resources. Pulumi is one of the tools that can be used to manage generic Infrastructure as Code stacks. In Pulumi, Infrastructure resources are declared in programs. Programs reside in a project. The programs are instantiated as stacks in the infrastructure platform. A stack is an isolated and configurable instance of the program.

Pulumi Concepts.png

Architecture

TO PROCESS: https://www.pulumi.com/docs/intro/concepts/how-pulumi-works/

Program

A program contains code that describes how cloud infrastructure should be composed. It can be written in Python, TypeScript or Go. Infrastructure is declared by defining resource objects whose properties correspond to the desire state of the infrastructure. The properties are also used to express dependencies between resources, and can be exported outside the stack. It is recommended to group resource with common lifecycles together. Programs reside in projects.

Supported Programming Languages

https://www.pulumi.com/docs/intro/languages/

Project

https://www.pulumi.com/docs/intro/concepts/project/#projects

A project is a directory that contains program and metadata on how to run the program. The program and metadata are read by the Pulumi CLI and applied to the infrastructure platform with the pulumi up command, creating a stack.

Current Project

The current project is the project given by the nearest Pulumi.yaml file.

Organization

Resource

https://www.pulumi.com/docs/intro/concepts/resources/

TO PROCESS: https://www.pulumi.com/docs/intro/concepts/resources/

Pulumi understands dependencies between resources and uses the relationship between resources to maximize execution parallelism and ensure correct ordering when a stack is instantiated.

Property

Difference between resource and stack inputs/outputs.

Input Property

Output Property

Stack

https://www.pulumi.com/docs/intro/concepts/stack/

A stack is an isolated, independently configurable instance of a Pulumi program. Stacks are commonly used to denote different phases of development, such as "development", "staging" and "production", or feature branches. A project can have an arbitrary number of stacks. By default, Pulumi creates a new stack per project when pulumi new is used.

Stack Name

A fully qualified stack name includes the organization and the project name: <org-name>/<project-name>/<stack-name>.

Stack URI

What is the semantics of a stack URI?

Active Stack

Stack References

https://www.pulumi.com/docs/intro/concepts/stack/#stackreferences

Stack Tags

https://www.pulumi.com/docs/intro/concepts/stack/#stack-tags

Stacks have associated metadata as tags. Each tags has a name and a value. A set of built-in tags are automatically assigned and updated each time is updated). Tags are only supported with the Pulumi Service backend.

Stack Output

https://www.pulumi.com/docs/intro/concepts/stack/#outputs

Stack outputs can be shared with other teams.

Destroying and Deleting a Stack

Destroying a stack means releasing and deleting resources associated with the stack.

Deleting a stack means removing all stack history from the backend and the stack configuration file Pulumi.<stack-name>.yaml.

⚠️ Forcefully deleting a stack before destroying it may leave orphaned resources behind.

Stack Operations

Inputs and Outputs

https://www.pulumi.com/docs/intro/concepts/inputs-outputs/

TO PROCESS: https://www.pulumi.com/docs/intro/concepts/inputs-outputs/

See stack outputs.

State and Backends

https://www.pulumi.com/docs/intro/concepts/state/

TO PROCESS: https://www.pulumi.com/docs/intro/concepts/state/

Backend

Name

URL

Authentication and Identity

The backend decides what a user can and cannot see, for example organizations, based on user's OD group configuration. A user's OD group list, as known by the Pulumi backend, is given by pulumi whoami --verbose.

Service Backend

Configuration

https://www.pulumi.com/docs/intro/concepts/config/#configuration

TO PROCESS: https://www.pulumi.com/docs/intro/concepts/config/

Template

Secrets

https://www.pulumi.com/docs/intro/concepts/secrets/

TO PROCESS: https://www.pulumi.com/docs/intro/concepts/secrets/

Pulumi.yaml

Built-in Tags

pulumi:project

pulumi:runtime

pulumi:description

gitHub:owner

gitHub:repo

vcs:owner

vcs:repo

vcs:kind

Logging

TO PROCESS: https://www.pulumi.com/docs/intro/concepts/logging/

Assets and Archives

TO PROCESS: https://www.pulumi.com/docs/intro/concepts/assets-archives/

Function Serialization

TO PROCESS: https://www.pulumi.com/docs/intro/concepts/function-serialization/

Pulumi vs Terraform

https://www.pulumi.com/docs/intro/vs/terraform/

Also see:

Terraform