Course Outline
Module 1: Introduction to Infrastructure as Code and Terraform
- Key IaC concepts and their benefits for on-premises and hybrid environments.
- Terraform overview: understanding providers, resources, state, and the lifecycle.
- Installation of Terraform, Azure CLI, and other required tools.
- Initial hands-on activity: writing and applying a simple Terraform configuration locally.
Module 2: HashiCorp Configuration Language (HCL) and Configuration Basics
- HCL syntax, covering resources, attributes, and expressions.
- Working with variables, outputs, locals, and type constraints.
- Utilizing the Terraform CLI for init, plan, apply, destroy, and fmt commands.
- Hands-on lab: building a parameterized configuration for both an on-premises and an Azure resource.
Module 3: Providers, Resources, and Azure Provider Fundamentals
- Understanding providers and configuring them (specifically the AzureRM provider).
- Mapping infrastructure components to Terraform resources (networking, compute, storage).
- Managing Azure authentication and service principals for automation.
- Hands-on exercise: provisioning an Azure virtual network and a simple VM via Terraform.
Module 4: State Management, Backends, and Collaboration
- Terraform state: its purpose, format, and lifecycle considerations.
- Implementing remote backends with Azure Storage Account and state locking strategies.
- Managing workspaces, environments, and collaboration patterns for teams.
- Lab: configuring remote state in Azure Storage and executing a multi-user workflow.
Module 5: Modularization, Reusability, and Best Practices
- Authoring and consuming Terraform modules.
- Defining module inputs/outputs, versioning, and registry patterns.
- Establishing folder layouts, naming conventions, and a maintainable repository structure.
- Hands-on: creating a reusable module for an Azure VM with disk and network, and testing 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.
- Strategies 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: deploying an Azure VM fleet representing operator units and configuring inventory tagging and basic monitoring.
Module 7: CI/CD, Automation, and Deployment Pipelines
- Integrating Terraform with CI/CD platforms (such as GitHub Actions and Azure DevOps pipelines).
- Automating plan/apply processes with secured secrets and service principals.
- Introduction to Policy as Code (Sentinel or Open Policy Agent patterns) and pre-deployment checks.
- Hands-on: creating a simple GitHub Actions workflow to plan and apply Terraform against a sandbox subscription.
Module 8: Security, Secrets, and Operational Practices
- Managing secrets via Azure Key Vault integration and preventing sensitive data leakage in state files.
- Implementing access control, RBAC, and least privilege for automation accounts.
- Drift detection, state reconciliation, and basic remediation practices.
- Checklist covering backup, auditing, and governance for Terraform-managed infrastructure.
Module 9: Testing, Debugging, and Troubleshooting
- Debugging Terraform configurations and interpreting plan diffs effectively.
- Unit and integration testing approaches using terraform validate, tflint, and kitchen-terraform.
- Identifying common error patterns and applying resolution strategies.
- Lab: running validation and linting tools to identify and fix discovered issues.
Module 10: Capstone Project — Hybrid Deployment Scenario
- Design exercise: planning an on-premises plus Azure device deployment using learned patterns.
- Implementing core components using modules, remote state, and CI/CD pipeline snippets.
- Presentation of the solution, discussion of trade-offs, and review of the operational runbook.
Summary and Next Steps
Requirements
- A solid grasp of basic networking and virtualization concepts.
- Familiarity with the Windows or Linux command line.
- Fundamental knowledge of cloud or on-premises infrastructure concepts.
Target Audience
- System administrators and platform engineers.
- DevOps practitioners new to Infrastructure as Code.
- IT teams responsible for managing hybrid (on-prem plus 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