Google Cloud network and instance with ComponentResource
A Google Cloud Python Pulumi program using ComponentResource
This example lives in the pulumi/examples repository. Check out just this directory to use it:
git clone --filter=blob:none --sparse https://github.com/pulumi/examples pulumi-examplesgit -C pulumi-examples sparse-checkout set gcp-py-network-componentcd pulumi-examples/gcp-py-network-componentThis example uses pulumi.ComponentResource as described here to create a Google Cloud network and instance.
The use of pulumi.ComponentResource demonstrates how multiple low-level resources can be composed into a higher-level, reusable abstraction.
Prerequisites#
Deploying the example#
-
Create a new stack:
Terminal window pulumi stack init dev -
Set the Google Cloud project and region:
Terminal window pulumi config set gcp:project proj-123456pulumi config set gcp:region us-central1 -
Configure one or more subnetwork CIDRs for the program to use. Note: This example uses structured configuration as per Structured Configuration:
Terminal window pulumi config set --path 'subnet_cidr_blocks[0]' 172.1.0.0/16pulumi config set --path 'subnet_cidr_blocks[1]' 172.2.0.0/16 -
Install dependencies:
Terminal window python3 -m venv venvsource venv/bin/activatepip install -r requirements.txt -
Run
pulumi upto preview and deploy the changes:Terminal window pulumi upUpdating (dev):Type Name Status+ pulumi:pulumi:Stack gcp-py-network-component-dev created+ ├─ my:modules:Vpc demo created+ │ └─ gcp:compute:Network demo created+ │ ├─ gcp:compute:Subnetwork demo-0 created+ │ ├─ gcp:compute:Subnetwork demo-1 created+ │ ├─ gcp:compute:Router demo created+ │ └─ gcp:compute:RouterNat demo created+ └─ my:modules:Instance demo created+ ├─ gcp:compute:Address demo-nginx created+ ├─ gcp:compute:Firewall demo-nginx created+ └─ gcp:compute:Instance demo-nginx createdOutputs:network : "demo-7a734d7"public_ip: "34.66.58.210"Resources:+ 11 createdDuration: 46s -
Get the IP address of the newly-created instance from the stack’s outputs:
Terminal window pulumi stack output nginx_public_ip13.64.196.146 -
Check to see that your server is now running:
Terminal window curl http://$(pulumi stack output nginx_public_ip)Powered by Pulumi!
Cleaning up#
Once you’re finished experimenting, destroy your stack and remove it:
pulumi destroypulumi stack rm