Course Outline
Module 1: Introduction to Infrastructure as Code and Terraform
- The core concepts of IaC and their advantages within on-premises and hybrid landscapes
- An overview of Terraform, covering providers, resources, state management, and the resource lifecycle
- Installation procedures for Terraform, Azure CLI, and other necessary utilities
- Initial practical exercise: drafting a basic Terraform configuration and executing it locally
Module 2: HashiCorp Configuration Language (HCL) and Configuration Basics
- Details on HCL syntax, including resources, attributes, and expression usage
- Defining variables, outputs, locals, and enforcing type constraints
- Operating the Terraform CLI: commands for init, plan, apply, destroy, and fmt
- Practical lab: constructing a parameterized configuration for both an on-prem resource and an Azure resource
Module 3: Providers, Resources, and Azure Provider Fundamentals
- Gaining insight into providers and configuring the AzureRM provider
- Mapping physical infrastructure to Terraform resources across networking, compute, and storage
- Handling Azure authentication and setting up service principals for automated tasks
- Practical task: provisioning an Azure virtual network and a basic VM through Terraform
Module 4: State Management, Backends, and Collaboration
- Understanding Terraform state: its purpose, structure, and lifecycle implications
- Utilizing remote backends via Azure Storage Accounts and implementing state locking strategies
- Managing workspaces, environments, and establishing collaboration workflows for teams
- Lab exercise: 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 effectively
- Defining module inputs/outputs, managing versions, and applying registry patterns
- Establishing folder layouts, naming conventions, and maintaining a well-structured repository
- Practical exercise: developing a reusable module for an Azure VM with disk and network components, and testing it across various environments
Module 6: Managing Azure Virtual Devices and On-Prem Integration
- Overseeing the lifecycle of Azure Virtual Machines, Virtual Desktop components, and other devices via Terraform
- Strategies for hybrid device management, linking on-prem resources with Azure-managed devices
- Integrating volumetric or device management systems using data sources and external providers
- Lab exercise: deploying a fleet of Azure VMs representing operator units, including inventory tagging and basic monitoring setup
Module 7: CI/CD, Automation, and Deployment Pipelines
- Connecting Terraform with CI/CD tools such as GitHub Actions and Azure DevOps pipelines
- Automating plan and apply processes while securing secrets and managing service principals
- Introducing Policy as Code basics, such as Sentinel or Open Policy Agent patterns, and implementing pre-deployment checks
- Practical exercise: building a simple GitHub Actions workflow to plan and apply Terraform against a sandbox subscription
Module 8: Security, Secrets, and Operational Practices
- Handling secrets through Azure Key Vault integration and preventing sensitive data leakage in state files
- Implementing access controls, RBAC, and least privilege principles for automation accounts
- Performing drift detection, state reconciliation, and basic remediation tasks
- Reviewing a checklist for backup, auditing, and governance of Terraform-managed infrastructure
Module 9: Testing, Debugging, and Troubleshooting
- Diagnosing Terraform configurations and interpreting plan diffs with precision
- Applying unit and integration testing methods using tools like terraform validate, tflint, and kitchen-terraform
- Identifying common error patterns and developing effective resolution strategies
- Lab exercise: executing validation and linting tools and correcting identified issues
Module 10: Capstone Project — Hybrid Deployment Scenario
- Design challenge: planning an on-prem + Azure device deployment using previously learned patterns
- Implementing core components by leveraging modules, remote state, and CI/CD pipeline snippets
- Presenting the solution, discussing potential trade-offs, and reviewing operational runbooks
Summary and Next Steps
Requirements
- A solid grasp of fundamental networking and virtualization principles
- Comfort with navigating command-line interfaces on Windows or Linux systems
- Foundational knowledge of both cloud and on-premises infrastructure architectures
Target Audience
- System administrators and platform engineers
- DevOps practitioners initiating their journey with Infrastructure as Code
- IT teams responsible for managing hybrid infrastructure spanning on-premises and Azure environments
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