Course Outline
Module 1: Introduction to Infrastructure as Code and Terraform
- Core IaC concepts and their advantages in on-premises and hybrid environments
- Overview of Terraform: providers, resources, state, and the resource lifecycle
- Installing Terraform, Azure CLI, and other essential tools
- Initial hands-on exercise: writing and applying a simple local Terraform configuration
Module 2: HashiCorp Configuration Language (HCL) and Configuration Basics
- HCL syntax, defining resources, attributes, and expressions
- Working with variables, outputs, locals, and type constraints
- Utilizing the Terraform CLI: init, plan, apply, destroy, and fmt commands
- Hands-on lab: creating a parameterized configuration for both an on-prem resource and an Azure resource
Module 3: Providers, Resources, and Azure Provider Fundamentals
- Understanding providers and configuring the AzureRM provider
- Mapping infrastructure components (networking, compute, storage) to Terraform resources
- Managing Azure authentication and setting up service principals for automation
- Practical exercise: provisioning an Azure virtual network and a simple VM via Terraform
Module 4: State Management, Backends, and Collaboration
- Understanding Terraform state: its purpose, format, and lifecycle implications
- Implementing remote backends using Azure Storage Accounts and applying state locking strategies
- Managing workspaces, environments, and establishing collaboration patterns 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
- Managing module inputs/outputs, versioning, and registry patterns
- Best practices for folder layout, naming conventions, and maintaining a structured 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
- Using Terraform to manage Azure Virtual Machines, Virtual Desktop components, and device lifecycle
- Strategies 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, and configuring inventory tagging and basic monitoring
Module 7: CI/CD, Automation, and Deployment Pipelines
- Integrating Terraform with CI/CD systems (such as GitHub Actions and 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 to a sandbox subscription
Module 8: Security, Secrets, and Operational Practices
- Managing secrets through Azure Key Vault integration and preventing sensitive data from residing in state files
- Implementing access control, RBAC, and least-privilege principles for automation accounts
- Handling drift detection, state reconciliation, and basic remediation tasks
- Operational 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 (using tools like terraform validate, tflint, and kitchen-terraform)
- Identifying common error patterns and applying resolution strategies
- Lab: executing 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 the patterns learned
- 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 solid grasp of fundamental networking and virtualization concepts
- Experience with Windows or Linux command-line interfaces
- Basic understanding of cloud or on-premises infrastructure principles
Target Audience
- System administrators and platform engineers
- DevOps practitioners looking to get started 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