DevOps Classroomnotes 30/Dec/2021

Terraform Workspaces

  • Generally when we write terraform configuration, we would like to create multiple environments such as
  • Developer
  • System Test
  • Performance Test
  • Staging
  • Production
  • For all the environments our infrastructure is same, the arguments might differ, There might be some additional resources in some environments
  • To handle this we would not creat multiple copies of infrastructure and create different backend configurations.
  • To deal with single template and multi environments terraform introduced a concept called workspaces. Refer Here for the official docs
  • Now lets explore terraform workspace cli
    Preview
    Preview
  • Lets try to create two workspaces
  • ST => System Test
    Preview
  • UAT => Staging
    Preview
  • Refer Here for some of the changes done
  • Refer Here for the fixes done to the output variable
  • Select the current workspace as ST
terraform workspace select ST
terraform apply -var-file="env/ST.tfvars"
  • Now lets select the current workspace as UAT
terraform workspace select UAT
terraform apply -var-file="env/UAT.tfvars"
  • Refer Here for some of the changes done to accomodate multi environments
  • To set the current workspace we are using terraform workspace select, the other way of doing SET TF_WORKSPACE to the active environment
  • Other environmental variables of terraform Refer Here
  • Exercise: Try to create all the tag with with env-<name>
tags = {
    Name = format("%s-WebSg", terraform.workspace),
    Env = terraform.workspace
}
  • From CI/CD Engines when we need manage Terraform infra creation. From the Jenkins/Azure DevOps pipelines, You will have an agent/node where terraform is installed and credentials configured/passed
# if the terraform code is available in some git try to configure the git to clone 
terraform init
terraform workspace select <build-parameter>
terraform apply -var-file=<varfile> -auto-approve
  • Next Steps:
  • Reusable Templates => Modules => Registry
  • Creating a Module and using community module

Published
Categorized as Uncategorized Tagged

By continuous learner

devops & cloud enthusiastic learner

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Please turn AdBlock off
Animated Social Media Icons by Acurax Wordpress Development Company

Discover more from Direct DevOps from Quality Thought

Subscribe now to keep reading and get access to the full archive.

Continue reading

Visit Us On FacebookVisit Us On LinkedinVisit Us On Youtube