AWS Classic

v4.30.0 published on Tuesday, Nov 30, 2021 by Pulumi

StackReference Example

View Code

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
    $ npm install
    
  2. Create a new stack:

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

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

    $ pulumi up
    Previewing update (dev):
    
        Type                 Name                               Plan
    +   pulumi:pulumi:Stack  aws-ts-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-ts-stackreference-company-dev  created
    
    Outputs:
        companyName: "ACME Widget Company"
    
    Resources:
        + 1 created
    
    Duration: 1s
    
    Permalink: https://app.pulumi.com/clstokes/aws-ts-stackreference-company/dev/updates/1
    
  5. Change directory to department and install dependencies.

    $ cd ../company
    $ npm install
    
  6. Create a new stack:

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

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

    $ pulumi up
    Previewing update (dev):
    
        Type                 Name                                  Plan
    +   pulumi:pulumi:Stack  aws-ts-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-ts-stackreference-department-dev  created
    
    Outputs:
        departmentName: "E-Commerce"
    
    Resources:
        + 1 created
    
    Duration: 1s
    
    Permalink: https://app.pulumi.com/clstokes/aws-ts-stackreference-department/dev/updates/1
    
  9. Change directory to team and install dependencies.

    $ cd ../team
    $ npm install
    
  10. Create a new stack:

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

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

    $ envchain aws pulumi up
    Previewing update (dev):
    
        Type                             Name                                           Plan
    +   pulumi:pulumi:Stack              aws-ts-stackreference-team-dev                 create
    >-  ├─ pulumi:pulumi:StackReference  clstokes/aws-ts-stackreference-department/dev  read
    >-  ├─ pulumi:pulumi:StackReference  clstokes/aws-ts-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-ts-stackreference-team-dev                 created
    >-  ├─ pulumi:pulumi:StackReference  clstokes/aws-ts-stackreference-company/dev     read
    >-  ├─ pulumi:pulumi:StackReference  clstokes/aws-ts-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-ts-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