Updated for Terraform 0.12.

This workshops is made up of a series of labs to take you through the fundamentals of using Terraform to manage the deployment and removal of simple Azure services, through to modularising your own standards to effectively manage large scale deployments.

This lab will cover a lot of ground, including

  • Terraform principles, workflows and terminology
  • The three ways of authenticating the Terraform Azure Provider
  • Using the interpolation syntax
  • Variables, locals, data, outputs
  • Load order and overrides
  • Dependencies and the graph database
  • Using modules and the Module Registry
  • Provisioners and using the taint command
  • Meta-parameters such as count and depends_on
  • Using the splat operator
  • Protecting and locking your state
  • Using workspaces and read only states
  • Sensitive data
  • Integrating with git repositories


For labs 1 and 2 you only need an Azure subscription as we will use the Cloud Shell.

For labs 3 then please get your machine set up as per the automation prereqs page.


A good working knowledge of the Azure services and ecosystem has been assumed.

A background knowledge of Terraform is advised. The button below will take you to Terraform’s intro guide.

Terraform Intro


Lab Name Description
1 Basics Use the basic Terraform workflow in Cloud Shell
2 Variables Provision from within VS Code and start to use variables
3 Core Environment Use a GitHub repo and provision a core environment
4 Meta Parameters Make use of copy and other meta parameters
5 Multi Tenancy Using Service Principals and Managed Service Identity
6 State Configuring remote state and using read only state in split environments
7 Modules Learn about modules, converting your .tf files, Terraform Registry
8 Extending beyond ARM Use providers and the AAD API to fully configure a kubernetes cluster
9 Provisioners Leverage provisioners to customise your virtual machine deployments (coming soon)

Leave a comment