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:

runtime:
  name: python
  options:
    virtualenv: venv

virtualenv is the path, relative to the project directory, to the virtual environment to use.

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

Python Code Examples