Course Outline
Module 1: Introduction to Infrastructure as Code and Terraform
- Exploring IaC concepts and their advantages in on-premises and hybrid settings.
- An overview of Terraform, covering providers, resources, state, and the resource lifecycle.
- Installing Terraform, Azure CLI, and other essential tools.
- Initial hands-on exercise: creating and applying a basic Terraform configuration locally.
Module 2: HashiCorp Configuration Language (HCL) and Configuration Basics
- Detailed look at HCL syntax, including resources, attributes, and expressions.
- Working with variables, outputs, locals, and type constraints.
- Utilizing the Terraform CLI for key tasks such as init, plan, apply, destroy, and fmt.
- Practical lab: developing a parameterized configuration for both an on-premises resource and an Azure resource.
Module 3: Providers, Resources, and Azure Provider Fundamentals
- Understanding provider roles and configuring the AzureRM provider.
- Mapping real-world infrastructure to Terraform resources across networking, compute, and storage.
- Managing Azure authentication and service principals for automated workflows.
- Hands-on task: provisioning an Azure virtual network and a basic VM using Terraform.
Module 4: State Management, Backends, and Collaboration
- The role, format, and lifecycle of Terraform state.
- Setting up remote backends using Azure Storage Accounts and implementing state locking.
- Best practices for workspaces, environments, and team collaboration.
- Lab exercise: configuring remote state in Azure Storage and executing multi-user workflows.
Module 5: Modularization, Reusability, and Best Practices
- Creating and utilizing Terraform modules effectively.
- Handling module inputs/outputs, versioning, and registry usage.
- Establishing clear folder layouts, naming conventions, and maintainable repository structures.
- Hands-on project: building a reusable module for an Azure VM with disk and network, and testing it across different environments.
Module 6: Managing Azure Virtual Devices and On-Prem Integration
- Controlling the lifecycle of Azure Virtual Machines, Virtual Desktop components, and devices via Terraform.
- Strategies for hybrid device management, linking on-premises resources with Azure-managed devices.
- Integrating volumetric or device management systems using data sources and external providers.
- Lab task: deploying a fleet of Azure VMs to represent operator units, including inventory tagging and basic monitoring setup.
Module 7: CI/CD, Automation, and Deployment Pipelines
- Integrating Terraform with CI/CD systems like GitHub Actions and Azure DevOps pipelines.
- Automating plan/apply processes using secured secrets and service principals.
- Introduction to Policy as Code (using Sentinel or Open Policy Agent patterns) and pre-deployment checks.
- Hands-on exercise: creating a GitHub Actions workflow to plan and apply Terraform configurations to a sandbox subscription.
Module 8: Security, Secrets, and Operational Practices
- Managing secrets via Azure Key Vault integration and preventing sensitive data exposure in state files.
- Implementing access control, RBAC, and least privilege principles for automation accounts.
- Techniques for drift detection, state reconciliation, and basic remediation.
- Reviewing checklists for backup, auditing, and governance of Terraform-managed infrastructure.
Module 9: Testing, Debugging, and Troubleshooting
- Debugging Terraform configurations and interpreting plan diffs effectively.
- Approaches to unit and integration testing using tools like terraform validate, tflint, and kitchen-terraform.
- Identifying common error patterns and applying resolution strategies.
- Lab session: running validation and linting tools to identify and fix issues.
Module 10: Capstone Project — Hybrid Deployment Scenario
- Design exercise: planning an on-premises + Azure device deployment using the patterns learned in the course.
- 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 solid grasp of fundamental networking and virtualization concepts.
- Proficiency with Windows or Linux command-line interfaces.
- A basic understanding of cloud or on-premises infrastructure principles.
Target Audience
- System administrators and platform engineers.
- DevOps practitioners starting their journey with Infrastructure as Code.
- IT teams responsible for managing hybrid infrastructure combining on-premises and Azure resources.
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