Course Outline
Module 1: Introduction to Infrastructure as Code and Terraform
- The concept and advantages of IaC for on-premises and hybrid environments.
- Overview of Terraform: including providers, resources, state, and the lifecycle.
- Setting up Terraform, Azure CLI, and other essential tools.
- Initial practical exercise: creating a basic Terraform configuration and applying it locally.
Module 2: HashiCorp Configuration Language (HCL) and Configuration Basics
- HCL syntax, covering resources, attributes, and expressions.
- Defining variables, outputs, locals, and type constraints.
- Command-line operations with Terraform: init, plan, apply, destroy, and fmt.
- Practical lab: constructing a parameterized configuration for both on-prem and Azure resources.
Module 3: Providers, Resources, and Azure Provider Fundamentals
- Understanding providers and setting up the AzureRM provider configuration.
- Translating infrastructure into Terraform resources (networking, compute, storage).
- Handling Azure authentication and service principals for automated processes.
- Practical exercise: deploying an Azure virtual network and a basic VM using Terraform.
Module 4: State Management, Backends, and Collaboration
- The role, format, and lifecycle aspects of Terraform state.
- Utilizing remote backends via Azure Storage Account and implementing state locking strategies.
- Managing workspaces, environments, 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 utilizing Terraform modules.
- Managing module inputs/outputs, version control, and registry patterns.
- Establishing folder structures, naming standards, and maintainable repository layouts.
- Practical exercise: building a reusable module for 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.
- Strategies for hybrid device management: linking on-prem resources with Azure-managed devices.
- Connecting volumetric or device management systems using data sources and external providers.
- Lab: deploying an Azure VM fleet representing operator units, setting up inventory tags, and basic monitoring.
Module 7: CI/CD, Automation, and Deployment Pipelines
- Embedding Terraform within CI/CD systems (GitHub Actions, Azure DevOps pipelines).
- Automating plan/apply steps with secure secrets and service principals.
- Fundamentals of Policy as Code (Sentinel or Open Policy Agent patterns) and pre-deployment checks.
- Practical exercise: developing a basic 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.
- Enforcing access control, RBAC, and least privilege for automation accounts.
- Detecting drift, reconciling state, and basic remediation procedures.
- Checklists for backup, auditing, and governing Terraform-managed infrastructure.
Module 9: Testing, Debugging, and Troubleshooting
- Diagnosing Terraform configurations and interpreting plan diffs effectively.
- Approaches to unit and integration testing (terraform validate, tflint, kitchen-terraform).
- Identifying common error patterns and strategies for resolution.
- Lab: executing validation and linting tools and correcting identified issues.
Module 10: Capstone Project — Hybrid Deployment Scenario
- Design challenge: planning an on-prem + Azure device deployment using acquired patterns.
- Building 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
- Foundational knowledge of networking and virtualization principles.
- Comfort with the Windows or Linux command line interface.
- Basic understanding of cloud or on-premises infrastructure architectures.
Target Audience
- System administrators and platform engineers.
- DevOps practitioners introducing Infrastructure as Code into their workflows.
- IT teams responsible for maintaining 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