Course Outline
Module 1: Introduction to Infrastructure as Code and Terraform
- Exploring IaC concepts and their advantages for on-premises and hybrid environments
- An overview of Terraform: understanding providers, resources, state, and lifecycle
- Setting up 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
- Mastering HCL syntax, resources, attributes, and expressions
- Working with variables, outputs, locals, and type constraints
- Utilizing the Terraform CLI for commands like 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 Fundamentals
- Understanding providers and configuring the AzureRM provider
- Mapping infrastructure components (networking, compute, storage) to Terraform resources
- Handling Azure authentication and service principals for automated tasks
- Practical exercise: provisioning an Azure virtual network and a simple VM using 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 strategies for state locking
- Managing workspaces, environments, and collaboration workflows for teams
- Lab setup: 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
- Establishing folder layouts, naming conventions, and maintainable repository structures
- Practical exercise: building a reusable module for an Azure VM + disk + 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 lifecycles via Terraform
- Patterns 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 activity: deploying an Azure VM fleet representing operator units, then configuring inventory tagging 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 processes using secured secrets and service principals
- Basics of Policy as Code (using Sentinel or Open Policy Agent patterns) and pre-deployment checks
- Practical exercise: creating a GitHub Actions workflow to plan and apply Terraform against a sandbox subscription
Module 8: Security, Secrets, and Operational Practices
- Secret management: integrating Azure Key Vault and preventing sensitive data exposure in state files
- Implementing access control, RBAC, and least privilege principles for automation accounts
- Detecting drift, reconciling state, and applying basic remediation practices
- Checklist covering backups, 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 resolution strategies
- Lab session: running validation and linting tools to identify and fix issues
Module 10: Capstone Project — Hybrid Deployment Scenario
- Design challenge: 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 the operational runbook
Summary and Next Steps
Requirements
- A foundational understanding of basic networking and virtualization concepts
- Experience working with Windows or Linux command-line interfaces
- General 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 (on-prem + Azure) infrastructures
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