Course Outline
Module 1: Introduction to Infrastructure as Code and Terraform
- Core IaC concepts and their strategic benefits for on-premises and hybrid environments.
- An overview of Terraform architecture, including providers, resources, state management, and lifecycle handling.
- Installation of Terraform, Azure CLI, and other necessary development tools.
- Initial practical exercise: authoring a simple Terraform configuration and applying it locally.
Module 2: HashiCorp Configuration Language (HCL) and Configuration Basics
- Detailed review of HCL syntax, resource definitions, attributes, and expressions.
- Utilizing variables, outputs, locals, and defining type constraints.
- Mastering the Terraform CLI for essential commands: init, plan, apply, destroy, and fmt.
- Hands-on lab: constructing a parameterized configuration for both an on-premises resource and an Azure resource.
Module 3: Providers, Resources, and Azure Provider Fundamentals
- Understanding the role of providers and configuring the AzureRM provider.
- Mapping real-world infrastructure components (networking, compute, storage) to Terraform resources.
- Managing Azure authentication methods and setting up service principals for automation.
- Practical session: provisioning an Azure virtual network and a basic VM using Terraform.
Module 4: State Management, Backends, and Collaboration
- Deep dive into Terraform state: its purpose, data format, and lifecycle implications.
- Configuring remote backends using Azure Storage Accounts and implementing state locking strategies.
- Managing workspaces, environments, and establishing effective collaboration patterns for teams.
- Laboratory exercise: setting up remote state in Azure Storage and simulating a multi-user workflow.
Module 5: Modularization, Reusability, and Best Practices
- Techniques for authoring and consuming Terraform modules effectively.
- Handling module inputs/outputs, versioning, and leveraging registry patterns.
- Establishing best practices for folder layouts, naming conventions, and maintainable repository structures.
- Practical exercise: developing a reusable module for an Azure VM with associated disk and network resources, then testing it across multiple environments.
Module 6: Managing Azure Virtual Devices and On-Prem Integration
- Controlling the lifecycle of Azure Virtual Machines, Virtual Desktop components, and other devices via Terraform.
- Implementing patterns for hybrid device management by connecting on-premises resources with Azure-managed devices.
- Integrating volumetric storage or device management systems using data sources and external providers.
- Laboratory exercise: deploying a fleet of Azure VMs representing operator units, while configuring inventory tagging and basic monitoring.
Module 7: CI/CD, Automation, and Deployment Pipelines
- Integrating Terraform into CI/CD workflows using GitHub Actions and Azure DevOps pipelines.
- Automating plan and apply processes with secured secrets and service principals.
- Introduction to Policy as Code (using Sentinel or Open Policy Agent patterns) and implementing pre-deployment checks.
- Practical exercise: creating a GitHub Actions workflow to plan and apply Terraform configurations against a sandbox subscription.
Module 8: Security, Secrets, and Operational Practices
- Secure secrets management using Azure Key Vault integration and preventing sensitive data leakage in state files.
- Enforcing access control, RBAC, and least-privilege principles for automation accounts.
- Implementing drift detection, state reconciliation, and basic remediation workflows.
- Operational checklist: covering backup strategies, auditing, and governance for Terraform-managed infrastructure.
Module 9: Testing, Debugging, and Troubleshooting
- Effectively debugging Terraform configurations and interpreting plan diffs.
- Applying unit and integration testing approaches using tools like terraform validate, tflint, and kitchen-terraform.
- Identifying common error patterns and developing strategies for resolution.
- Laboratory exercise: running validation and linting tools to identify and fix configuration issues.
Module 10: Capstone Project — Hybrid Deployment Scenario
- Design exercise: planning a comprehensive on-premises and Azure device deployment using the patterns learned.
- Implementation of core components using modules, remote state, and CI/CD pipeline snippets.
- Presentation of the solution, discussion of architectural trade-offs, and review of the operational runbook.
Summary and Next Steps
Requirements
- A solid understanding of fundamental networking and virtualization concepts.
- Proficiency with Windows or Linux command-line interfaces.
- Basic knowledge of cloud or on-premises infrastructure architecture.
Target Audience
- System administrators and platform engineers.
- DevOps practitioners starting their journey with Infrastructure as Code.
- IT teams responsible for managing hybrid infrastructure comprising 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