Course Outline
Module 1: Introduction to Infrastructure as Code and Terraform
- Explore IaC concepts and their benefits for on-premises and hybrid environments.
- Overview of Terraform: providers, resources, state, and lifecycle.
- Installing Terraform, Azure CLI, and other required tools.
- First hands-on exercise: writing a simple Terraform configuration and applying it locally.
Module 2: HashiCorp Configuration Language (HCL) and Configuration Basics
- HCL syntax, including resources, attributes, and expressions.
- Working with variables, outputs, locals, and type constraints.
- Using the Terraform CLI: init, plan, apply, destroy, and fmt commands.
- Hands-on lab: build a parameterized configuration for both on-premises and Azure resources.
Module 3: Providers, Resources, and Azure Provider Fundamentals
- Understanding providers and provider configuration, focusing on the AzureRM provider.
- Mapping infrastructure to Terraform resources, covering networking, compute, and storage.
- Managing Azure authentication and service principals for automation.
- Hands-on: provision 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 considerations.
- Using remote backends with Azure Storage Accounts and implementing state locking strategies.
- Utilizing workspaces, environments, and collaboration patterns for teams.
- Lab: configure remote state in Azure Storage and perform a multi-user workflow.
Module 5: Modularization, Reusability, and Best Practices
- Authoring and consuming Terraform modules.
- Understanding module inputs/outputs, versioning, and registry patterns.
- Establishing folder layouts, naming conventions, and maintainable repository structures.
- Hands-on: create a reusable module for an Azure VM, disk, and network, and test 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.
- Patterns for hybrid device management: connecting on-premises resources with Azure-managed devices.
- Integrating volumetric or device management systems through data sources and external providers.
- Lab: deploy a fleet of Azure VMs representing operator units, configure inventory tagging, and set up basic monitoring.
Module 7: CI/CD, Automation, and Deployment Pipelines
- Integrating Terraform with CI/CD tools such as GitHub Actions and Azure DevOps pipelines.
- Automating plan and apply processes with secured secrets and service principals.
- Introduction to Policy as Code (using Sentinel or Open Policy Agent patterns) and pre-deployment checks.
- Hands-on: create a simple GitHub Actions workflow to plan and apply Terraform against a sandbox subscription.
Module 8: Security, Secrets, and Operational Practices
- Managing secrets: integrating with Azure Key Vault and avoiding sensitive data in state files.
- Implementing access control, RBAC, and least privilege principles for automation accounts.
- Techniques for drift detection, state reconciliation, and basic remediation.
- Checklist for backup, auditing, and governance of Terraform-managed infrastructure.
Module 9: Testing, Debugging, and Troubleshooting
- Debugging Terraform configurations and effectively reading plan diffs.
- Approaches to unit and integration testing (using terraform validate, tflint, and kitchen-terraform).
- Common error patterns and strategies for resolution.
- Lab: run validation and linting tools to identify and fix discovered issues.
Module 10: Capstone Project — Hybrid Deployment Scenario
- Design exercise: plan an on-premises and Azure device deployment using the patterns learned.
- Implement core components using modules, remote state, and CI/CD pipeline snippets.
- Present your solution, discuss trade-offs, and review the runbook for operations.
Summary and Next Steps
Requirements
- Understanding of basic networking and virtualization concepts.
- Familiarity with Windows or Linux command-line interfaces.
- Basic knowledge of cloud or on-premises infrastructure concepts.
Audience
- System administrators and platform engineers.
- DevOps practitioners just starting with Infrastructure as Code.
- IT teams managing hybrid infrastructure (on-premises + 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