Course Outline
Module 1: Introduction to Infrastructure as Code and Terraform
- IaC concepts and their advantages for on-premises and hybrid environments
- Terraform overview: providers, resources, state, and lifecycle management
- Installation of Terraform, Azure CLI, and necessary supporting tools
- First practical exercise: writing and applying a simple Terraform configuration locally
Module 2: HashiCorp Configuration Language (HCL) and Configuration Basics
- HCL syntax, resource definitions, attributes, and expressions
- Variables, outputs, local values, and type constraints
- Utilizing the Terraform CLI: init, plan, apply, destroy, and fmt
- Practical 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 components to Terraform resources (networking, compute, storage)
- Managing Azure authentication and service principals for automated tasks
- Hands-on task: provisioning an Azure virtual network and a basic VM via Terraform
Module 4: State Management, Backends, and Collaboration
- Terraform state: purpose, structure, and lifecycle considerations
- Implementing remote backends with Azure Storage Accounts and state locking strategies
- Workspaces, environment management, and team collaboration patterns
- Lab: setting up remote state in Azure Storage and executing a multi-user workflow
Module 5: Modularization, Reusability, and Best Practices
- Creating and using Terraform modules
- Module inputs/outputs, versioning, and registry conventions
- Directory structures, naming standards, and maintaining a clean repository
- Hands-on task: building a reusable module for Azure VMs with disks and networks, and testing it across environments
Module 6: Managing Azure Virtual Devices and On-Prem Integration
- Controlling Azure Virtual Machines, Virtual Desktop components, and device lifecycles via Terraform
- Strategies for hybrid device management: linking on-prem resources with Azure-managed devices
- Integrating volume or device management systems using data sources and external providers
- Lab: deploying an Azure VM fleet representing operator units, along with configuring inventory tags and basic monitoring
Module 7: CI/CD, Automation, and Deployment Pipelines
- Connecting Terraform with CI/CD systems (GitHub Actions, Azure DevOps pipelines)
- Automating plan/apply workflows with secured secrets and service principals
- Basics of Policy as Code (Sentinel or Open Policy Agent patterns) and pre-deployment validations
- Hands-on task: building a simple GitHub Actions workflow to plan and apply Terraform to a sandbox subscription
Module 8: Security, Secrets, and Operational Practices
- Secret management: integrating Azure Key Vault and preventing sensitive data leakage in state files
- Access control, RBAC, and enforcing least privilege for automation accounts
- Drift detection, state reconciliation, and basic remediation techniques
- 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 methods (terraform validate, tflint, kitchen-terraform)
- Common error scenarios and resolution strategies
- Lab: executing validation and linting tools and rectifying identified issues
Module 10: Capstone Project — Hybrid Deployment Scenario
- Design challenge: planning an on-prem + Azure device deployment using acquired patterns
- Implementation of core components using modules, remote state, and CI/CD pipeline snippets
- Presentation of the solution, discussion of trade-offs, and review of the operational runbook
Summary and Next Steps
Requirements
- A foundational understanding of basic networking and virtualization concepts
- Comfort with the Windows or Linux command line interface
- Basic familiarity with cloud or on-premises infrastructure principles
Target Audience
- System administrators and platform engineers
- DevOps practitioners 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