Skip to content

Latest commit

 

History

History
207 lines (145 loc) · 5.39 KB

File metadata and controls

207 lines (145 loc) · 5.39 KB

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. Change directory to department and install dependencies.

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

    $ virtualenv -p python3 venv
    $ source venv/bin/activate
    $ pip3 install -r requirements.txt
  8. Create a new stack:

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

    $ pulumi config set departmentName 'E-Commerce'
  10. 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
  11. Change directory to team and install dependencies.

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

    $ virtualenv -p python3 venv
    $ source venv/bin/activate
    $ pip3 install -r requirements.txt
    
  13. Create a new stack:

    $ pulumi stack init dev
  14. 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
  15. 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

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