Course Outline
Module 1: Introduction to Infrastructure as Code and Terraform
- Exploring IaC concepts and benefits for on-premises and hybrid environments.
- Overview of Terraform: providers, resources, state, and lifecycle.
- Installing Terraform, Azure CLI, and other required tools.
- First hands-on exercise: writing a simple Terraform configuration and applying it locally.
Module 2: HashiCorp Configuration Language (HCL) and Configuration Basics
- Understanding HCL syntax, resources, attributes, and expressions.
- Working with variables, outputs, locals, and type constraints.
- Using the Terraform CLI commands: init, plan, apply, destroy, and fmt.
- Hands-on lab: building a parameterized configuration for both an on-prem and an Azure resource.
Module 3: Providers, Resources, and Azure Provider Fundamentals
- Understanding providers and configuring the AzureRM provider.
- Mapping infrastructure elements to Terraform resources (networking, compute, storage).
- Managing Azure authentication and service principals for automation.
- Hands-on: provisioning an Azure virtual network and a simple VM via Terraform.
Module 4: State Management, Backends, and Collaboration
- Understanding Terraform state: its purpose, format, and lifecycle considerations.
- Utilizing remote backends with Azure Storage Account and implementing state locking strategies.
- Using workspaces, environments, and collaboration patterns for team efficiency.
- Lab: configuring remote state in Azure Storage and executing a multi-user workflow.
Module 5: Modularization, Reusability, and Best Practices
- Authoring and consuming Terraform modules.
- Managing module inputs/outputs, versioning, and registry patterns.
- Establishing folder layouts, naming conventions, and maintainable repository structures.
- Hands-on: creating a reusable module for Azure VM + disk + network and testing it across environments.
Module 6: Managing Azure Virtual Devices and On-Prem Integration
- Managing Azure Virtual Machines, Virtual Desktop components, and device lifecycle via Terraform.
- Implementing patterns for hybrid device management: connecting on-prem resources with Azure-managed devices.
- Integrating volumetric or device management systems through data sources and external providers.
- Lab: deploying an Azure VM fleet representing operator units and configuring inventory tagging with basic monitoring.
Module 7: CI/CD, Automation, and Deployment Pipelines
- Integrating Terraform with CI/CD tools (GitHub Actions, Azure DevOps pipelines).
- Automating plan and apply processes using secured secrets and service principals.
- Basics of Policy as Code (Sentinel or Open Policy Agent patterns) and pre-deployment checks.
- Hands-on: creating a simple GitHub Actions workflow to plan and apply Terraform against a sandbox subscription.
Module 8: Security, Secrets, and Operational Practices
- Managing secrets via Azure Key Vault integration and avoiding sensitive data in state files.
- Implementing access control, RBAC, and least privilege principles for automation accounts.
- Performing drift detection, state reconciliation, and basic remediation practices.
- Checklist: establishing backup, auditing, and governance procedures for Terraform-managed infrastructure.
Module 9: Testing, Debugging, and Troubleshooting
- Debugging Terraform configurations and effectively reading plan diffs.
- Approaches for unit and integration testing (terraform validate, tflint, kitchen-terraform).
- Identifying common error patterns and applying resolution strategies.
- Lab: running validation and linting tools to identify and fix issues.
Module 10: Capstone Project — Hybrid Deployment Scenario
- Design exercise: planning an on-prem + Azure device deployment using learned patterns.
- Implementing core components using modules, remote state, and CI/CD pipeline snippets.
- Presenting the solution, discussing trade-offs, and reviewing the operations runbook.
Summary and Next Steps
Requirements
- An understanding of basic networking and virtualization concepts.
- Familiarity with Windows or Linux command-line interfaces.
- Basic knowledge of cloud or on-premises infrastructure concepts.
Audience
- System administrators and platform engineers.
- DevOps practitioners who are new to Infrastructure as Code.
- IT teams responsible for managing hybrid (on-prem + Azure) infrastructure.
Testimonials (3)
pacing for the most part was fantastic. Michal was very good at ensuring the audience were engaged and ensured everyone was following along for the most part
Asif Shaikh - Carpmaels & Ransford
Course - Terraform on Microsoft Azure
Checking all the details in practice - by writing real code
Michal Pipala - EY
Course - Advanced Terraform: Efficient Infrastructure as Code
the instructor was very well prepared