- Lab
- A Cloud Guru
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.
Path 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
What's a lab?
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.
Provided environment for hands-on practice
We will provide the credentials and environment necessary for you to practice right within your browser.
Guided walkthrough
Follow along with the author’s guided walkthrough and build something new in your provided environment!
Did you know?
On average, you retain 75% more of your learning if you get time for practice.