Course Outline
Module 1: Introduction to Infrastructure as Code and Terraform
- IaC concepts and their advantages in on-premises and hybrid environments
- Overview of Terraform: providers, resources, state, and lifecycle management
- Installation of Terraform, Azure CLI, and other necessary tools
- Initial practical exercise: writing and applying a simple Terraform configuration locally
Module 2: HashiCorp Configuration Language (HCL) and Configuration Basics
- HCL syntax, defining resources, attributes, and expressions
- Managing variables, outputs, locals, and type constraints
- Utilizing the Terraform CLI: init, plan, apply, destroy, and fmt commands
- Hands-on lab: constructing a parameterized configuration for both an on-prem and an Azure resource
Module 3: Providers, Resources, and Azure Provider Fundamentals
- Understanding providers and configuring them (specifically the AzureRM provider)
- Mapping infrastructure components to Terraform resources (networking, compute, storage)
- Handling Azure authentication and service principals for automated tasks
- Practical exercise: provisioning an Azure virtual network and a basic VM using Terraform
Module 4: State Management, Backends, and Collaboration
- The role, format, and lifecycle considerations of Terraform state
- Setting up remote backends with Azure Storage Account and implementing state locking strategies
- Managing workspaces, environments, and team collaboration patterns
- 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
- Defining module inputs/outputs, versioning, and registry usage patterns
- Establishing folder structures, naming conventions, and maintainable repository layouts
- Hands-on: developing a reusable module for Azure VM, disk, and network components and testing it across environments
Module 6: Managing Azure Virtual Devices and On-Prem Integration
- Managing 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 volumetric or device management systems through data sources and external providers
- Lab: deploying an Azure VM fleet to represent operator units, including inventory tagging and basic monitoring setup
Module 7: CI/CD, Automation, and Deployment Pipelines
- Integrating Terraform with CI/CD systems (GitHub Actions, Azure DevOps pipelines)
- Automating plan/apply processes while securing secrets and service principals
- Introduction to Policy as Code (using Sentinel or Open Policy Agent patterns) and pre-deployment checks
- Hands-on: creating a basic 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 from ending up in state files
- Implementing access control, RBAC, and least privilege principles for automation accounts
- Drift detection, state reconciliation, and basic remediation procedures
- Operational checklist: backup, auditing, and governance for Terraform-managed infrastructure
Module 9: Testing, Debugging, and Troubleshooting
- Debugging Terraform configurations and effectively interpreting plan diffs
- Approaches for unit and integration testing (terraform validate, tflint, kitchen-terraform)
- Identifying 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 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 operational runbook
Summary and Next Steps
Requirements
- A foundational understanding of basic networking and virtualization concepts
- Proficiency with Windows or Linux command line interfaces
- Basic knowledge of cloud or on-premises infrastructure architectures
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