Course Outline
Module 1: Introduction to Infrastructure as Code and Terraform
- IaC concepts and their benefits for on-premises and hybrid environments
- Terraform overview: exploring providers, resources, state, and lifecycle
- Installing Terraform, Azure CLI, and other essential tools
- Initial hands-on exercise: writing and applying a simple Terraform configuration locally
Module 2: HashiCorp Configuration Language (HCL) and Configuration Basics
- HCL syntax, resources, attributes, and expressions
- Working with variables, outputs, locals, and type constraints
- Using the Terraform CLI: init, plan, apply, destroy, and fmt
- Hands-on lab: constructing a parameterized configuration for both 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 elements to Terraform resources (networking, compute, storage)
- Managing Azure authentication and service principals for automation
- Hands-on: provisioning an Azure virtual network and a basic VM via Terraform
Module 4: State Management, Backends, and Collaboration
- Terraform state: understanding its purpose, format, and lifecycle implications
- Using remote backends with Azure Storage Accounts and state locking strategies
- Workspaces, environments, and collaboration patterns for teams
- Lab: setting up remote state in Azure Storage and executing a multi-user workflow
Module 5: Modularization, Reusability, and Best Practices
- Creating and consuming Terraform modules
- Module inputs/outputs, versioning, and registry patterns
- Folder structure, naming conventions, and maintaining a well-organized repository
- Hands-on: developing a reusable module for an Azure VM with disk and network, and testing it across different environments
Module 6: Managing Azure Virtual Devices and On-Prem Integration
- Managing Azure Virtual Machines, Virtual Desktop components, and device lifecycles via Terraform
- Patterns for hybrid device management: linking on-premises resources with Azure-managed devices
- Integrating volumetric or device management systems using data sources and external providers
- Lab: deploying a fleet of Azure VMs to represent operator units, including inventory tagging and basic monitoring
Module 7: CI/CD, Automation, and Deployment Pipelines
- Integrating Terraform with CI/CD systems (GitHub Actions, Azure DevOps pipelines)
- Automating plan/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 to 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 applying least privilege to 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
- Approaches to 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 operational runbooks
Summary and Next Steps
Requirements
- A foundational understanding of basic networking and virtualization concepts
- Comfort with Windows or Linux command-line interfaces
- Basic knowledge of 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 infrastructure (on-prem + Azure)
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