Course Outline
Module 1: Introduction to Infrastructure as Code and Terraform
- IaC concepts and their benefits for on-premises and hybrid environments.
- Terraform overview: understanding providers, resources, state, and lifecycle.
- Installation of Terraform, Azure CLI, and other necessary tools.
- First practical exercise: writing and applying a simple Terraform configuration locally.
Module 2: HashiCorp Configuration Language (HCL) and Configuration Basics
- HCL syntax, resources, attributes, and expressions.
- Variables, outputs, locals, and type constraints.
- Navigating the Terraform CLI: init, plan, apply, destroy, and fmt.
- Hands-on lab: developing a parameterized configuration for an on-premises resource and an Azure resource.
Module 3: Providers, Resources, and Azure Provider Fundamentals
- Understanding providers and configuring the AzureRM provider.
- Mapping infrastructure to Terraform resources (networking, compute, storage).
- Handling Azure authentication and service principals for automation.
- Practical task: provisioning an Azure virtual network and a basic VM via Terraform.
Module 4: State Management, Backends, and Collaboration
- Terraform state: its purpose, format, and lifecycle implications.
- Remote backends using Azure Storage Accounts and state locking strategies.
- Workspaces, environments, and collaboration patterns for teams.
- Lab: setting up remote state in Azure Storage and executing multi-user workflows.
Module 5: Modularization, Reusability, and Best Practices
- Creating and utilizing Terraform modules.
- Module inputs/outputs, versioning, and registry patterns.
- Folder structures, naming conventions, and maintaining a clean repository structure.
- Practical task: building 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.
- Patterns for hybrid device management: linking on-premises resources with Azure-managed devices.
- Integrating volumetric or device management systems via data sources and external providers.
- Lab: deploying a fleet of Azure VMs representing operator units, configuring inventory tags, and setting up basic monitoring.
Module 7: CI/CD, Automation, and Deployment Pipelines
- Integrating Terraform with CI/CD tools (GitHub Actions, Azure DevOps pipelines).
- Automating plan/apply processes with secured secrets and service principals.
- Basics of Policy as Code (Sentinel or Open Policy Agent patterns) and pre-deployment checks.
- Practical task: building a simple GitHub Actions workflow to plan and apply Terraform against a sandbox subscription.
Module 8: Security, Secrets, and Operational Practices
- Managing secrets: Azure Key Vault integration and preventing sensitive data in state files.
- Access control, RBAC, and least privilege principles for automation accounts.
- Drift detection, state reconciliation, and basic remediation practices.
- Checklist: backups, auditing, and governance for Terraform-managed infrastructure.
Module 9: Testing, Debugging, and Troubleshooting
- Debugging Terraform configurations and interpreting plan diffs effectively.
- Unit and integration testing approaches (terraform validate, tflint, kitchen-terraform).
- Common error patterns and resolution strategies.
- Lab: executing validation and linting tools and fixing identified issues.
Module 10: Capstone Project — Hybrid Deployment Scenario
- Design exercise: planning an on-prem + Azure device deployment using acquired 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
- A grasp of fundamental networking and virtualization concepts.
- Comfort with Windows or Linux command-line interfaces.
- Foundational knowledge of cloud or on-premises infrastructure.
Target Audience
- System administrators and platform engineers.
- DevOps professionals starting their journey with 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