Python Pulumi

From NovaOrdis Knowledge Base
Jump to navigation Jump to search

External

Internal

Pulumi Python SDK

https://www.pulumi.com/docs/reference/pkg/python/pulumi/

The SDK is available as a pip package.

Python Pulumi and Virtual Environments

A new Python project created with pulumi new will have a virtual environment created in a venv directory with required dependencies from requirements.txt installed in it. This behavior is controlled by the virtualenv runtime option in Pulumi.yaml.

Manually Initialize Pulumi Python Virtual Environment

To manually create a virtual environment and install dependencies, run the following commands in your project directory:

python3 -m venv venv
venv/bin/pip install -r requirements.txt

Pulumi Python Packges

https://www.pulumi.com/docs/reference/pkg/

Adding a New Dependency

To install a new dependency in the virtual environment, add the entry to requirements.txt and run in the project directory:

venv/bin/pip install -r requirements.txt

Project Layout

The project directory must contain either a __main__.py file or a setup.py file that defines the entry point.

 my-project
  │
  ├─ README.md
  ├─ Pulumi.yaml
  ├─ Pulumi.my-stack.yaml
  ├─ __main__.py
  ├─ requirements.txt
  └─ venv
      ├─ bin
      │   ├─ pip
      │   └─ python
      ├─ include
      ├─ lib
      └─ pyvenv.cfg

Also see:

Pulumi Concepts | Project Layout

__main__.py

__main__.py is the Pulumi Python program that defines the stack resources.

import pulumi
from pulumi_aws import ssm

parameter = ssm.Parameter("/test/a", type="String", value="1234")

pulumi.export("parameter_name", parameter.id)

Python Pulumi Programming Model

Get the name of the currently deploying project:

project = pulumi.get_project()

Getting whether we're doing a dry run or an actual deployment from the program:

project = pulumi.get_project()

Getting a stack programmatically:

stack = pulumi.get_stack()

Environment Variables

All shell environment variables are passed to the running program and can be accessed using the standard runtime APIs os.environ. This can also be used for dynamic behavior. Configuration is preferable, however, because it makes the behavior less sensitive to local environment configuration.

Code Examples

Pulumi Programming Model | Code Examples