Course Outline
Module 1: Introduction to Infrastructure as Code and Terraform
- Core IaC concepts and benefits for on-premises and hybrid environments.
- Terraform overview covering providers, resources, state management, and lifecycle.
- Installing Terraform, Azure CLI, and other required tools.
- First hands-on activity: 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 commands: init, plan, apply, destroy, and fmt.
- Hands-on lab: building a parameterized configuration for an on-premises resource 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: 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.
- Using remote backends with Azure Storage Accounts and implementing state locking strategies.
- Workspaces, environments, and collaboration patterns for team-based workflows.
- Lab: configuring remote state in Azure Storage and performing a multi-user workflow.
Module 5: Modularization, Reusability, and Best Practices
- Authoring and consuming Terraform modules.
- Module inputs and outputs, versioning strategies, and registry patterns.
- Folder layout, naming conventions, and maintaining a structured repository.
- Hands-on: creating a reusable module for an Azure VM, disk, and network, and testing it across different 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 using 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 systems such as GitHub Actions and Azure DevOps pipelines.
- Automating plan and apply steps with secured secrets and service principals.
- Basics of Policy as Code (using 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: integrating with Azure Key Vault and avoiding sensitive data in state files.
- Access control, RBAC, and applying the principle of least privilege for automation accounts.
- Drift detection, state reconciliation, and basic remediation practices.
- Checklist: backup procedures, auditing, and governance for 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).
- Identifying common error patterns and resolution strategies.
- Lab: running validation and linting tools and fixing any 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.
- Presenting the solution, discussing trade-offs, and reviewing the operational runbook.
Summary and Next Steps
Requirements
- A foundational understanding of networking and virtualization concepts.
- Familiarity with command-line interfaces for Windows or Linux.
- Basic knowledge of cloud or on-premises infrastructure principles.
Audience
- System administrators and platform engineers.
- DevOps practitioners who are just starting with Infrastructure as Code.
- IT teams responsible for managing hybrid infrastructure (combining on-premises 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