Managing Azure Infrastructure with Terraform (TERRAFORM) – Outline

Detailed Course Outline

Part 1: Infrastructure as Code

In this section, we will introduce the benefits that Infrastructure as Code (IaC) can bring to organizations and how IaC fits within modern DevOps best practices.

  • DevOps and GitOps
  • Principles of Infrastructure as Code
  • Applying Infrastructure as Code in DevOps
  • Infrastructure as Code best practices
  • Benefits of Infrastructure as Code
  • The case for Terraform

Part 2: Terraform Overview

This section provides an overview of Terraform concepts and vocabulary and instructs how Terraform manages infrastructure configuration in cloud environments.

  • Terraform configuration language overview
  • Terraform CLI
  • The lifecycle of a configuration
  • State storage – local versus remote
  • Connecting to Azure

Hands-on Labs:

  • Setting up a Terraform project

Part 3: Azure Resources

In this section participants will be getting hands-on practice using Terraform to create a simple application environment in Azure, learning the essential constructs in Terraform for defining resources.

  • Resource metadata and naming best practices
  • Subscription and resource group
  • Networking resources (VNet, subnet, network security group)
  • Compute resources (virtual machine)
  • Storage resources (storage account, file share, blob storage)
  • Database resources (SQL database)
  • Variables
  • Outputs

Hands-on Labs:

  • Deploying a VNet
  • Adding a virtual machine into your VNet
  • Adding storage and a database
  • Including variables in your code
  • Using Terraform commands to validate and inspect your configuration

Part 4: Terraform Programming

This section introduces programming constructs within Terraform that enable you to add more control and flexibility in defining resources.

  • Control operations (count, loops, conditional, depends_on, etc.)
  • Data structures (maps, lists, random_string, etc.)
  • Data sources
  • Functions (e.g., lookup, coalesce, join, merge, etc.)
  • Variable validation
  • Debugging Terraform

Hands-on Labs:

  • Managing multiple resources through count and loops
  • Using maps and lists in your code
  • Using functions in your code
  • Using Terraform CLI and state manipulation to debug your configuration

Part 5: Modules

This section shows how modules can be used to create reusable components in Terraform and teaches best practices in organizing Terraform code.

  • Purpose of modules
  • Modules code file organization structure
  • Module structure
  • Module sources and versioning
  • Nested modules
  • Publishing modules

Hands-on Labs:

  • Refactoring your earlier lab code to a module
  • Using Azure modules (subscription, metadata, resource group, virtual network)

Part 6: Wrapping Up

This section wraps up the course with reviews to reinforce what you have learned.

  • Reference material to learn more
  • Course review
  • Next steps