This example creates a "team" EC2 Instance with tags set from upstream "company" and "department" stacks via StackReference.
/**
* company
* └─ department
* └─ team
*/
-
Change directory to
company
and install dependencies.$ cd company
-
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
-
Create a new stack:
$ pulumi stack init dev
-
Set the required configuration variables:
$ pulumi config set companyName 'ACME Widget Company'
-
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
-
Deactivate the virtual environment
$ deactivate
-
Change directory to
department
and install dependencies.$ cd ../department
-
Create a Python virtualenv, activate it, and install dependencies:
$ python3 -m venv venv $ source venv/bin/activate $ pip3 install -r requirements.txt
-
Create a new stack:
$ pulumi stack init dev
-
Set the required configuration variables:
$ pulumi config set departmentName 'E-Commerce'
-
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
-
Deactivate the virtual environment
$ deactivate
-
Change directory to
team
and install dependencies.$ cd ../team
-
Create a Python virtualenv, activate it, and install dependencies:
$ python3 -m venv venv $ source venv/bin/activate $ pip3 install -r requirements.txt
-
Create a new stack:
$ pulumi stack init dev
-
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
-
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
-
Deactivate the virtual environment
$ deactivate
-
Once you are done, destroy all of the resources and the stack. Repeat this in each of the
company
,department
, andteam
directories from above that you ranpulumi up
within.$ pulumi destroy $ pulumi stack rm