
Welcome to the easiest way to learn Terraform on Azure—from scratch to scalable.
In this hands-on course, you'll master Infrastructure as Code and learn to automate real-world cloud deployments with confidence.
No endless theory, just practical concepts supported by guided labs, and production-ready skills.
Let’s turn your cloud chaos into clean, reusable code.
You can access the slides used in this course from the resource section.
In this session, we have covered the following topics -
A journey from procuring infrastructure from on-premise data centres to the automation through infrastructure as code.
Challenge with manual provisioning of infrastructures
How does automation solve the problem?
In this session, we have covered the following -
Introduction to Infrastructure as code
Ways to approach IaC - Declarative vs Imperative approach
IaC Tools – What's Out There in the Market?
Introduction to Terraform, its use case and features
Why Terraform is a preferred IaC tool ocer others
This hands-on lab covers the installation and setup of the Terraform tool with Azure Cloud.
There is also an attached document with a step-by-step guide that you can use to complete the setup
This session covers the Terraform workflow, how a DevOps or Cloud engineer writes the Terraform configuration, initialises the project, generates a plan and provisions the infrastructure. It also covers the process of updating and deleting the infrastructure.
This session covers the Hashicorp configuration language (HCL), the domain-specific language (DSL) developed by Hashicorp for Terraform.
In this hands-on lab, we have provisioned the first cloud infrastructure (resource group) on the MS Azure cloud using Terraform. The session also covers the demonstration of Terraform workflow
This session is the continuation of the previous hands-on lab to update and delete infrastructure using Terraform
This session covers Variables in Terraform, how to declare variables and call variables
This session covers the data types of Terraform variables and defining right data types based on the need
Provision an Azure virtual machine with full networking using Terraform, including a resource group, virtual network, subnet, public IP, and a network security group with SSH and HTTP rules.
Hands-on Lab - Add Terraform State File to a Remote Storage (Azure Storage account)
In this lab, we will configure Terraform to store its state file remotely in an Azure Storage account. This ensures better collaboration, state locking, and persistence.
Learning Objectives
Understand how to configure remote state storage in Azure Blob Storage using Terraform.
Learn how to create an Azure Storage Account and a Blob Container.
Configure Terraform backend for remote state management.
Apply Terraform configurations while using a remote backend.
Prerequisites
An Azure subscription.
Terraform installed on your local machine.
Azure CLI installed and logged in (az login).
Basic understanding of Terraform syntax and concepts.
Steps to Follow -
After watching the video, you can download the attached document to follow the steps and complete the lab.
In this session, we have covered Terraform Meta Arguments their purpose, examples like - depends_on, count, for_each
Lab - Practice count and for_each meta arguments in Terraform
In this hands-on lab, we will create multiple resource groups using a single resource block.
There are two meta-arguments to achieve this: count and for_each
Count is a meta-argument defined by Terraform. It can be used with modules and with every resource type.
Learning Objective -
Learn how to create multiple resources using terraform meta-arguments
Understand how count meta-argument works and when to use it
Understand how for_each meta-argument works and when to use it.
Pre-Requisite -
An Azure Subscription
Valid Credentials
Terraform and Azure CLI installed.
Steps to follow -
Follow the steps mentioned attached in the resource section to complete this hands-on lab
Lab - Building reusable resource blocks in Terraform using for_each meta-arguments and dynamic block
In this hands-on, we will create multiple reusable resource blocks using for_each meta arguments and dynamic blocks
Learning objectives -
Build reusable resources using the for_each meta argument
Build reusable parts of the resources using a dynamic block
Steps to follow -
To complete this hands-on lab, follow the steps mentioned in the document attached with this lecture under resource section
Lab - Troubleshooting Terraform Scripts
In this lab, we will guide you through common Terraform errors and how to troubleshoot them effectively. By the end, you will be able to diagnose and fix issues that arise when deploying infrastructure using Terraform.
Prerequisites
Terraform installed on your local machine
Azure CLI installed (for Azure-based troubleshooting)
An Azure account with an active subscription
Learning Objectives
Learn how to troubleshoot the errors
Learn how to read error messages and fix the errors.
Steps to follow -
Follow the steps mentioned in the attached document (under the resource section) to practice this hands-on lab
Lab - Provision Infrastructures using reusable modules.
In this lab, we will publish an Azure Virtual Network with two subnets in a Azure Resource
Group.
We will create the following modules in the lab -
Resource_group
Virtual_network
Subnet
and we reuse them as submodules in another project to build -
A resource group
A Virtual Network and
Two subnets - public and private
Pre-Requisite
Terraform installed on the system
Azure CLI Installed
Valid Azure Credentials
Learning Objectives:
Create reusable modules.
Use reusable modules as submodules in another project.
Steps to follow -
Complete the steps mentioned in the document attached under resource section to complete this handson lab
Lab - Publish terraform modules as git submodules for easy distribution
NOTE - This lab is a continuation of the previous lab and can only be done after completing the previous lab.
In this lab, we will publish the module as git sub-modules for easy distribution within the organisation.
What is Git Sub Module?
A Git submodule is a repository embedded inside another repository. It allows you to keep another Git repository as a subdirectory of your repository and keeps track of the commits of the submodule.
Learning Objective
Publish terraform modules as git sub-modules
Use git sub-modules in terraform projects.
Steps to follow -
Follow the steps mentioned in the document attached under resource section to complete this lab
Lab - Terraform Workspaces
In this lab, we will practice terraform workspaces. Terraform workspaces maintain separate instances of state data inside the same working directory.
Learning Objectives -
Create, list, select and delete Terraform workspaces
Manage multiple sets of non-overlapping resources through Terraform workspaces
Manage multiple terraform.statefile using Terraform workspaces
Steps to follow -
To complete this hands-on lab, follow the steps mentioned in the attached document under the resource section
Terraform’s AzureRM provider supports multiple authentication methods to access Azure. This guide covers five standard methods and provides step-by-step instructions for both manual (local) use and CI/CD (GitHub Actions) integration. According to HashiCorp’s recommendations, interactive use (such as a developer on a local machine) is easiest with Azure CLI authentication, while automated runs (such as in CI pipelines) should use a Service Principal or Managed Identity.
In the attached guide, we have covered the following methods of Authentication with Azure Cloud.
Azure CLI Authentication – Uses credentials from an Azure CLI login session (best for local development).
Managed Identity (MSI) – Uses an Azure-managed identity of the execution environment (ideal for Azure-hosted agents or VMs).
Service Principal with Client Secret – Uses an Azure AD app’s ID and secret (common for CI pipelines).
Service Principal with Client Certificate – Uses an Azure AD app’s ID and an associated certificate for login.
Service Principal with OpenID Connect (OIDC) – Uses federated identity tokens (modern approach for GitHub Actions to avoid secrets).
Each section describes how to set up the method manually and how to use it in GitHub Actions.
Learning Objectives
After completing this course, learners will be able to:
Explain Infrastructure as Code (IaC) principles and Terraform’s role in cloud provisioning
Write and understand HCL (HashiCorp Configuration Language) syntax
Deploy infrastructure on Azure using the AzureRM provider in Terraform
Execute Terraform workflows: init, plan, apply, and destroy
Manage remote state files and understand their purpose
Build, manage, and reuse Terraform modules for scalable deployments
Apply Terraform at individual, team, and enterprise levels
Use functions, meta-arguments, conditional expressions, and lifecycle rules
Troubleshoot Terraform scripts and debug common issues
Complete real-world case studies from project setup to deployment
Manual errors are giving way to 70% of the misconfigurations in cloud. DevOps and tech teams are struggling with security issues, downtime and the pain of debugging inconsistent environments that could’ve been automated in minutes.
Most developers start cloud automation the wrong way, copy-pasting Terraform code from the internet without understanding state management, module structuring, or real-world workflows.
I’ve designed this course to change that. With my decades of experience as a DevOps & Cloud Consultant for leading teams, I’ve put in the best practices for using Terraform, the IaC tool used by teams at Google, Microsoft, and top startups, to confidently deploy and manage infrastructure on Microsoft Azure.
This course is packed with practical insights, hands-on labs, and real-world examples, so you can go from “just running scripts” to building modular, scalable, production-ready cloud infrastructure that your team can rely on.
By the end of this course, you will walk away with:
A deployable, production-ready Azure project built entirely with Terraform
A clear understanding of IaC principles, state strategy, and module design
Reusable modules for your own projects
Readiness to apply Terraform confidently at your workplace
Technology is ever-evolving, and so is this course. I keep updating the courseware with the latest updates, so you’ll always be learning the most up-to-date methods aligned with current best practices.
Enrol now and start building scalable Azure infrastructure with Terraform.