Course Outline
Module 1: Introduction to Infrastructure as Code and Terraform
- Core IaC concepts and their advantages in on-premises and hybrid environments.
- Overview of Terraform: exploring providers, resources, state, and lifecycle management.
- Setting up Terraform, Azure CLI, and other necessary tools.
- Initial practical exercise: creating and applying a basic Terraform configuration locally.
Module 2: HashiCorp Configuration Language (HCL) and Configuration Basics
- HCL syntax fundamentals, including resources, attributes, and expressions.
- Defining variables, outputs, locals, and type constraints.
- Mastering the Terraform CLI: init, plan, apply, destroy, and fmt commands.
- Practical lab: constructing a parameterized configuration for both on-premises and Azure resources.
Module 3: Providers, Resources, and Azure Provider Fundamentals
- Understanding provider roles and configuration, specifically focusing on the AzureRM provider.
- Mapping real-world infrastructure (networking, compute, storage) to Terraform resources.
- Handling Azure authentication and service principals for automated workflows.
- Practical exercise: provisioning an Azure virtual network and a basic VM using Terraform.
Module 4: State Management, Backends, and Collaboration
- The role of Terraform state: purpose, format, and lifecycle implications.
- Implementing remote backends with Azure Storage Accounts and state locking strategies.
- Utilizing workspaces, environments, and collaboration patterns for team efficiency.
- Lab: configuring remote state in Azure Storage and executing a multi-user workflow.
Module 5: Modularization, Reusability, and Best Practices
- Creating and utilizing Terraform modules effectively.
- Managing module inputs/outputs, versioning, and registry patterns.
- Establishing folder structures, naming conventions, and maintainable repository layouts.
- Practical exercise: developing a reusable module for an Azure VM with disk and network components, testing across different environments.
Module 6: Managing Azure Virtual Devices and On-Prem Integration
- Overseeing Azure Virtual Machines, Virtual Desktop components, and device lifecycles via Terraform.
- Strategies for hybrid device management: linking 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 that simulates operator units, including inventory tagging and basic monitoring setup.
Module 7: CI/CD, Automation, and Deployment Pipelines
- Integrating Terraform with CI/CD systems (GitHub Actions, Azure DevOps pipelines).
- Automating plan and apply processes using secured secrets and service principals.
- Basics of Policy as Code (using Sentinel or Open Policy Agent patterns) and pre-deployment checks.
- Practical exercise: building a simple GitHub Actions workflow to plan and apply Terraform changes 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.
- Performing drift detection, state reconciliation, and basic remediation tasks.
- Reviewing checklists for backup, auditing, and governance of Terraform-managed infrastructure.
Module 9: Testing, Debugging, and Troubleshooting
- Debugging Terraform configurations and interpreting plan diffs efficiently.
- Approaches to unit and integration testing (using terraform validate, tflint, kitchen-terraform).
- Identifying common error patterns and effective resolution strategies.
- Lab: executing validation and linting tools and resolving identified issues.
Module 10: Capstone Project — Hybrid Deployment Scenario
- Design challenge: planning an on-premises and Azure device deployment using acquired patterns.
- Building core components with 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 basic networking and virtualization concepts.
- Familiarity with Windows or Linux command-line interfaces.
- Basic knowledge of cloud or on-premises infrastructure principles.
Target Audience
- System administrators and platform engineers.
- DevOps professionals starting their journey with Infrastructure as Code.
- IT teams responsible for managing hybrid infrastructure (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