- Lab
-
Libraries: If you want this lab, consider one of these libraries.
- Cloud

Building Flexible Network Templates in GCP with Terraform
You are a DevOps engineer at an organization that is moving their configuration management to Infrastructure as Code (IaC) using Terraform. The networking team wants to move to managing their GCP VPCs and subnets with Terraform, but is concerned that maintaining separate code bases for development and production networks would lead to the environments not having the same configurations. You will create a single Terraform module and build both production and development VPCs using that module. This way, the environments will remain mirrored, and managing changes will be transparent and auditable.

Lab Info
Table of Contents
-
Challenge
Create a 'networking' Module and Use It to Create a Small Development VPC
- Create a
terraform
directory to work in. - Create a
modules/networking
directory, and create amain.tf
inside of it. - Define variables for
environment
,cidr_range
,regions
andsubnet_size
. - Create a
locals
block and use thesplit()
,element()
,length()
, andtonumber()
Terraform functions to calculate thenewbits
value for thecidrsubnet()
function argument. - Create a
google_compute_network
resource. - Create a
google_compute_subnetwork
resource. Use thecount
argument to create a subnet in each region in theregions
variable. Use thecidrsubnet()
function to calculate theip_cidr_range
based on thecidr_range
variable. - In the
terraform
directory, create adev
folder containing amain.tf
file. - Create a
terraform
block and amodule
referencing themodules/networking
code. Set theenvironment
todev
, thecidr_range
to10.10.0.0/24
,regions
to["us-central1", "us-east1"]
, andsubnet_size
to28
. - Execute
terraform init
. - Execute
terraform apply
.
- Create a
-
Challenge
Using the Same Module, Create a Production VPC with a Larger CIDR Block and More Subnets
- In the
terraform
directory, create aprod
folder containing amain.tf
file. - Create a
terraform
block and amodule
referencing themodules/networking
code. Set theenvironment
toprod
, thecidr_range
to10.0.0.0/8
,regions
to["us-central1", "us-east1", "us-east4", "us-west1"]
, andsubnet_size
to24
. - Execute
terraform init
. - Execute
terraform apply
.
- In the
About the author
Real skill practice before real-world application
Hands-on Labs are real environments created by industry experts to help you learn. These environments help you gain knowledge and experience, practice without compromising your system, test without risk, destroy without fear, and let you learn from your mistakes. Hands-on Labs: practice your skills before delivering in the real world.
Learn by doing
Engage hands-on with the tools and technologies you’re learning. You pick the skill, we provide the credentials and environment.
Follow your guide
All labs have detailed instructions and objectives, guiding you through the learning process and ensuring you understand every step.
Turn time into mastery
On average, you retain 75% more of your learning if you take time to practice. Hands-on labs set you up for success to make those skills stick.