Skip to content

Latest commit

 

History

History
 
 

aws-py-stackreference

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 

StackReference Example

This example creates a "team" EC2 Instance with tags set from upstream "company" and "department" stacks via StackReference.

/**
 *   company
 *   └─ department
 *      └─ team
 */

Getting Started

  1. Change directory to company and install dependencies.

    $ cd company
  2. Create a Python virtualenv, activate it, and install dependencies:

    This installs the dependent packages needed for our Pulumi program.

    $ python3 -m venv venv
    $ source venv/bin/activate
    $ pip3 install -r requirements.txt
  3. Create a new stack:

    $ pulumi stack init dev
  4. Set the required configuration variables:

    $ pulumi config set companyName 'ACME Widget Company'
  5. Deploy everything with the pulumi up command.

    $ pulumi up
    Previewing update (dev):
    
        Type                 Name                               Plan
    +   pulumi:pulumi:Stack  aws-py-stackreference-company-dev  create
    
    Resources:
        + 1 to create
    
    Do you want to perform this update? yes
    Updating (dev):
    
        Type                 Name                               Status
    +   pulumi:pulumi:Stack  aws-py-stackreference-company-dev  created
    
    Outputs:
        companyName: "ACME Widget Company"
    
    Resources:
        + 1 created
    
    Duration: 1s
    
    Permalink: https://app.pulumi.com/clstokes/aws-py-stackreference-company/dev/updates/1
  6. Deactivate the virtual environment

    $ deactivate
  7. Change directory to department and install dependencies.

    $ cd ../department
  8. Create a Python virtualenv, activate it, and install dependencies:

    $ python3 -m venv venv
    $ source venv/bin/activate
    $ pip3 install -r requirements.txt
  9. Create a new stack:

    $ pulumi stack init dev
  10. Set the required configuration variables:

    $ pulumi config set departmentName 'E-Commerce'
  11. Deploy everything with the pulumi up command.

    $ pulumi up
    Previewing update (dev):
    
        Type                 Name                                  Plan
    +   pulumi:pulumi:Stack  aws-py-stackreference-department-dev  create
    
    Resources:
        + 1 to create
    
    Do you want to perform this update? yes
    Updating (dev):
    
        Type                 Name                                  Status
    +   pulumi:pulumi:Stack  aws-py-stackreference-department-dev  created
    
    Outputs:
        departmentName: "E-Commerce"
    
    Resources:
        + 1 created
    
    Duration: 1s
    
    Permalink: https://app.pulumi.com/clstokes/aws-py-stackreference-department/dev/updates/1
  12. Deactivate the virtual environment

    $ deactivate
  13. Change directory to team and install dependencies.

    $ cd ../team
  14. Create a Python virtualenv, activate it, and install dependencies:

    $ python3 -m venv venv
    $ source venv/bin/activate
    $ pip3 install -r requirements.txt
    
  15. Create a new stack:

    $ pulumi stack init dev
  16. Set the required configuration variables, replacing YOUR_ORG with the name of your Pulumi organization:

    $ pulumi config set companyStack YOUR_ORG/aws-py-stackreference-company/dev
    $ pulumi config set departmentStack YOUR_ORG/aws-py-stackreference-department/dev
    $ pulumi config set teamName 'Frontend Dev'
    $ pulumi config set aws:region us-west-2 # any valid AWS zone works
  17. Deploy everything with the pulumi up command.

    $ envchain aws pulumi up
    Previewing update (dev):
    
        Type                             Name                                           Plan
    +   pulumi:pulumi:Stack              aws-py-stackreference-team-dev                 create
    >-  ├─ pulumi:pulumi:StackReference  clstokes/aws-py-stackreference-department/dev  read
    >-  ├─ pulumi:pulumi:StackReference  clstokes/aws-py-stackreference-company/dev     read
    +   └─ aws:ec2:Instance              tagged                                         create
    
    Resources:
        + 2 to create
    
    Do you want to perform this update? yes
    Updating (dev):
    
        Type                             Name                                           Status
    +   pulumi:pulumi:Stack              aws-py-stackreference-team-dev                 created
    >-  ├─ pulumi:pulumi:StackReference  clstokes/aws-py-stackreference-company/dev     read
    >-  ├─ pulumi:pulumi:StackReference  clstokes/aws-py-stackreference-department/dev  read
    +   └─ aws:ec2:Instance              tagged                                         created
    
    Outputs:
        instanceId  : "i-0a9ede9c446503903"
        instanceTags: {
            Managed By: "Pulumi"
            company   : "ACME Widget Company"
            department: "E-Commerce"
            team      : "Frontend Dev"
        }
    
    Resources:
        + 2 created
    
    Duration: 28s
    
    Permalink: https://app.pulumi.com/clstokes/aws-py-stackreference-team/dev/updates/1
  18. Deactivate the virtual environment

    $ deactivate

Clean Up

  1. Once you are done, destroy all of the resources and the stack. Repeat this in each of the company, department, and team directories from above that you ran pulumi up within.

    $ pulumi destroy
    $ pulumi stack rm