Course Outline
Module 1: Introduction to Infrastructure as Code and Terraform
- IaC principles and their advantages in on-premises and hybrid settings
- Terraform overview: providers, resources, state management, and lifecycle
- Installation of Terraform, Azure CLI, and other necessary tools
- Initial practical exercise: creating a simple Terraform configuration and applying it locally
Module 2: HashiCorp Configuration Language (HCL) and Basic Configuration
- HCL syntax, resources, attributes, and expressions
- Variables, outputs, locals, and type constraints
- Utilizing the Terraform CLI: init, plan, apply, destroy, and fmt
- Practical lab: constructing a parameterized configuration for both an on-prem resource and an Azure resource
Module 3: Providers, Resources, and Azure Provider Basics
- Understanding providers and setting up provider configurations (specifically the AzureRM provider)
- Mapping infrastructure components to Terraform resources (networking, compute, storage)
- Handling Azure authentication and service principals for automation
- Practical exercise: provisioning an Azure virtual network and a basic VM via Terraform
Module 4: State Management, Backends, and Team Collaboration
- Terraform state: purpose, structure, and lifecycle considerations
- Using remote backends with Azure Storage Account and implementing state locking strategies
- Workspaces, environments, and collaboration workflows for teams
- Lab: configuring remote state in Azure Storage and executing a multi-user workflow
Module 5: Modularization, Reusability, and Best Practices
- Creating and utilizing Terraform modules
- Module inputs/outputs, versioning, and registry strategies
- Folder organization, naming conventions, and maintaining a structured repository
- Practical exercise: developing a reusable module for an Azure VM, disk, and network, and testing it across different environments
Module 6: Managing Azure Virtual Devices and On-Prem Integration
- Controlling Azure Virtual Machines, Virtual Desktop components, and device lifecycle via Terraform
- Strategies for hybrid device management: linking on-prem resources with Azure-managed devices
- Integrating volumetric or device management systems using data sources and external providers
- Lab: deploying an Azure VM fleet to represent operator units, configuring inventory tagging, and setting up basic monitoring
Module 7: CI/CD, Automation, and Deployment Pipelines
- Connecting Terraform with CI/CD platforms (GitHub Actions, Azure DevOps pipelines)
- Automating plan/apply processes with secured secrets and service principals
- Fundamentals of Policy as Code (using Sentinel or Open Policy Agent patterns) and pre-deployment checks
- Practical exercise: establishing a simple GitHub Actions workflow to plan and apply Terraform against a sandbox subscription
Module 8: Security, Secrets, and Operational Practices
- Managing secrets: integrating Azure Key Vault and preventing sensitive data in state files
- Access control, RBAC, and enforcing least privilege for automation accounts
- Drift detection, state reconciliation, and basic remediation techniques
- Checklist: backup, 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 methods (terraform validate, tflint, kitchen-terraform)
- Common error patterns and strategies for resolution
- Lab: running validation and linting tools to identify and fix issues
Module 10: Capstone Project — Hybrid Deployment Scenario
- Design task: planning an on-prem and 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 operational runbook
Summary and Recommended Next Steps
Requirements
- A solid grasp of fundamental networking and virtualization principles
- Proficiency with Windows or Linux command-line interfaces
- Basic familiarity with cloud or on-premises infrastructure concepts
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