Course Outline
Module 1: Foundations of Infrastructure as Code and Terraform
- The concept of IaC and its advantages for on-premises and hybrid environments
- Overview of Terraform: providers, resources, state management, and lifecycle
- Installation of Terraform, Azure CLI, and other essential tools
- Initial hands-on exercise: writing and applying a basic Terraform configuration locally
Module 2: HashiCorp Configuration Language (HCL) and Core Configuration Concepts
- HCL syntax, resource definitions, attributes, and expressions
- Utilizing variables, outputs, locals, and type constraints
- Navigating 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 Essentials
- Understanding providers and configuring the AzureRM provider
- Mapping infrastructure components (networking, compute, storage) to Terraform resources
- Handling Azure authentication and service principals for automated tasks
- Practical exercise: provisioning an Azure virtual network and a simple VM using Terraform
Module 4: State Management, Backends, and Team Collaboration
- Terraform state: purpose, structure, and lifecycle implications
- Implementing remote backends with Azure Storage Accounts and state locking strategies
- Managing workspaces, environments, and team collaboration patterns
- Lab session: setting up remote state in Azure Storage and executing a multi-user workflow
Module 5: Modularization, Reusability, and Best Practices
- Creating and utilizing Terraform modules
- Defining module inputs/outputs, versioning, and registry usage patterns
- Establishing folder structures, naming conventions, and maintainable repository layouts
- Hands-on task: developing a reusable module for an Azure VM, disk, and network, and testing it across different environments
Module 6: Managing Azure Virtual Devices and On-Premises 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 exercise: deploying an Azure VM fleet representing operator units, including inventory tagging and basic monitoring setup
Module 7: CI/CD, Automation, and Deployment Pipelines
- Integrating Terraform with CI/CD platforms (GitHub Actions, Azure DevOps pipelines)
- Automating plan/apply processes using secured secrets and service principals
- Introduction to Policy as Code (Sentinel or Open Policy Agent patterns) and pre-deployment checks
- Practical task: creating a GitHub Actions workflow to plan and apply Terraform changes to a sandbox subscription
Module 8: Security, Secrets, and Operational Practices
- Managing secrets: integrating Azure Key Vault and preventing sensitive data leakage in state files
- Implementing access control, RBAC, and least privilege principles for automation accounts
- Drift detection, state reconciliation, and basic remediation workflows
- Operational checklist: backup, auditing, and governance for Terraform-managed infrastructure
Module 9: Testing, Debugging, and Troubleshooting
- Debugging Terraform configurations and effectively interpreting plan diffs
- Approaches to unit and integration testing (terraform validate, tflint, kitchen-terraform)
- Common error patterns and effective resolution strategies
- Lab session: executing validation and linting tools to identify and fix issues
Module 10: Capstone Project — Hybrid Deployment Scenario
- Design challenge: planning an on-prem + Azure device deployment using acquired skills
- Implementing core components with modules, remote state, and CI/CD pipeline snippets
- Presenting the solution, analyzing trade-offs, and reviewing the operational runbook
Summary and Future Steps
Requirements
- A solid grasp of fundamental networking and virtualization principles
- Proficiency with Windows or Linux command-line interfaces
- Foundational understanding of both cloud-based and on-premises infrastructure architectures
Target Audience
- System administrators and platform engineers
- DevOps practitioners initiating their journey with Infrastructure as Code
- IT departments responsible for maintaining hybrid (on-prem + Azure) infrastructures
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