Course Outline
Module 1: Introduction to Infrastructure as Code and Terraform
- Exploring IaC concepts and their advantages for on-premises and hybrid settings
- An overview of Terraform: examining providers, resources, state management, and lifecycle
- Setting up Terraform, Azure CLI, and other necessary utilities
- Practical exercise: creating and applying a basic Terraform configuration locally
Module 2: HashiCorp Configuration Language (HCL) and Configuration Basics
- Understanding HCL syntax, resource definitions, attributes, and expressions
- Working with variables, outputs, locals, and type constraints
- Utilizing the Terraform CLI: commands for init, plan, apply, destroy, and fmt
- Hands-on lab: constructing a parameterized configuration for both an on-prem resource and an Azure resource
Module 3: Providers, Resources, and Azure Provider Fundamentals
- Understanding the role of providers and configuring them (specifically the AzureRM provider)
- Mapping physical and virtual infrastructure to Terraform resources (networking, compute, storage)
- Handling Azure authentication and service principals for automated workflows
- Practical exercise: provisioning an Azure virtual network and a simple VM via Terraform
Module 4: State Management, Backends, and Collaboration
- Exploring Terraform state: its purpose, structure, and lifecycle implications
- Implementing remote backends with Azure Storage Account and strategies for state locking
- Managing workspaces, environments, and collaboration patterns for distributed teams
- Lab: configuring remote state in Azure Storage and simulating a multi-user workflow
Module 5: Modularization, Reusability, and Best Practices
- Creating and utilizing Terraform modules
- Defining module inputs/outputs, managing versions, and using registry patterns
- Establishing folder structures, naming conventions, and maintaining a clean repository layout
- Hands-on: building a reusable module for Azure VM, disk, and network configurations and testing it across different environments
Module 6: Managing Azure Virtual Devices and On-Prem Integration
- Overseeing Azure Virtual Machines, Virtual Desktop components, and device lifecycles using Terraform
- Strategies for hybrid device management: linking on-prem resources with Azure-managed devices
- Integrating volumetric or device management systems using data sources and external providers
- Lab: deploying an Azure VM fleet representing operator units, including inventory tagging and basic monitoring setup
Module 7: CI/CD, Automation, and Deployment Pipelines
- Connecting Terraform to CI/CD systems (GitHub Actions, Azure DevOps pipelines)
- Automating plan/apply processes with secured secrets and service principals
- Introductory Policy as Code concepts (Sentinel or Open Policy Agent patterns) and pre-deployment validations
- Hands-on: setting up a simple GitHub Actions workflow to plan and apply Terraform in a sandbox subscription
Module 8: Security, Secrets, and Operational Practices
- Managing secrets: integrating Azure Key Vault and preventing sensitive data leakage in state files
- Implementing access control, RBAC, and least-privilege principles for automation accounts
- Detecting drift, reconciling state, and applying basic remediation techniques
- Checklist: establishing backup, auditing, and governance protocols for Terraform-managed infrastructure
Module 9: Testing, Debugging, and Troubleshooting
- Debugging Terraform configurations and interpreting plan diffs effectively
- Approaches for unit and integration testing (terraform validate, tflint, kitchen-terraform)
- Identifying common error patterns and implementing resolution strategies
- Lab: executing 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 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 principles
- Proficiency with Windows or Linux command-line interfaces
- Basic familiarity with cloud or on-premises infrastructure architectures
Target Audience
- System administrators and platform engineers
- DevOps specialists initiating their journey into Infrastructure as Code
- IT teams overseeing hybrid infrastructure (on-prem and 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