Skip to main content

Pulumi Python dynamic resource demonstration

An example demonstrating Pulumi Dynamic Providers

This example lives in the pulumi/examples repository. Check out just this directory to use it:

Get started with this example
git clone --filter=blob:none --sparse https://github.com/pulumi/examples pulumi-examples
git -C pulumi-examples sparse-checkout set aws-py-dynamicresource
cd pulumi-examples/aws-py-dynamicresource

A simple example demonstrating how to write Dynamic Providers using Pulumi.

Prerequisites#

  1. Install Pulumi
  2. Configure AWS credentials
  3. Install Python

Deploying the example#

  1. Create a new stack:

    Terminal window
    pulumi stack init aws-py-dynamicresource
  2. Set the AWS region and the names and passwords for admin and user:

    Terminal window
    pulumi config set aws:region us-west-2
    pulumi config set sql-admin-name <NAME>
    pulumi config set sql-admin-password <PASSWORD> --secret
    pulumi config set sql-user-name <NAME>
    pulumi config set sql-user-password <PASSWORD> --secret
  3. Install dependencies:

    Terminal window
    python3 -m venv venv
    source venv/bin/activate
    pip install -r requirements.txt
  4. Deploy the stack:

    Terminal window
    pulumi up
    Updating (aws-py-dynamicresource):
    Type Name Status
    + pulumi:pulumi:Stack aws-py-dynamicresource-aws-py-dynamicresource created
    + ├─ aws:ec2:Vpc app-vpc created
    + ├─ aws:ec2:InternetGateway app-gateway created
    + ├─ aws:ec2:SecurityGroup security-group created
    + ├─ aws:ec2:Subnet app-vpc-subnet created
    + ├─ aws:ec2:Subnet extra-rds-subnet created
    + ├─ aws:ec2:RouteTable app-routetable created
    + ├─ aws:rds:SubnetGroup app-database-subnetgroup created
    + ├─ aws:ec2:MainRouteTableAssociation app_routetable_association created
    + ├─ aws:rds:Instance mysql-server created
    + ├─ pulumi:providers:mysql mysql-provider created
    + ├─ mysql:index:Database mysql-database created
    + ├─ mysql:index:User mysql-standard-user created
    + ├─ mysql:index:Grant mysql-access-grant created
    + └─ pulumi-python:dynamic:Resource mysql_votes_table created
    Outputs:
    dynamic-resource-id: "schema-44462d37c8e04c18be08cbf05670a328"
    Resources:
    + 15 created
    Duration: 3m31s
  5. View the ID of the dynamic resource via pulumi stack output:

    Terminal window
    pulumi stack output
    Current stack outputs (1):
    OUTPUT VALUE
    dynamic-resource-id schema-44462d37c8e04c18be08cbf05670a328

Cleaning up#

To clean up resources, run pulumi destroy and answer the confirmation question at the prompt. Then run pulumi stack rm to remove the stack.

Related

The infrastructure as code platform for any cloud.