Course Outline
Module 1: Introduction to Infrastructure as Code and Terraform
- Understanding IaC concepts and their benefits in on-premises and hybrid settings.
- Overview of Terraform: exploring providers, resources, state management, and the resource lifecycle.
- Step-by-step installation of Terraform, Azure CLI, and other necessary tools.
- Initial practical exercise: writing and applying a basic Terraform configuration locally.
Module 2: HashiCorp Configuration Language (HCL) and Configuration Basics
- Deep dive into HCL syntax, including resources, attributes, and expressions.
- Working with variables, outputs, locals, and defining type constraints.
- Mastering the Terraform CLI: commands for 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 and setting up service principals for automated tasks.
- Practical exercise: provisioning an Azure virtual network and a basic VM using Terraform.
Module 4: State Management, Backends, and Collaboration
- Exploring the purpose, format, and lifecycle implications of Terraform state.
- Setting up remote backends using Azure Storage Accounts and implementing state locking strategies.
- Managing workspaces, environments, and effective collaboration patterns for teams.
- Lab session: configuring remote state in Azure Storage and executing a multi-user workflow.
Module 5: Modularization, Reusability, and Best Practices
- Learning how to author and consume Terraform modules effectively.
- Handling module inputs/outputs, versioning, and registry patterns.
- Establishing folder layouts, naming conventions, and maintaining a clean repository structure.
- Hands-on task: creating a reusable module for an Azure VM with disk and network configurations, and testing it across different environments.
Module 6: Managing Azure Virtual Devices and On-Prem Integration
- Controlling Azure Virtual Machines, Virtual Desktop components, and device lifecycles via Terraform.
- Developing patterns for hybrid device management, connecting on-premises resources with Azure-managed devices.
- Integrating volumetric or device management systems using data sources and external providers.
- Lab scenario: deploying a fleet of Azure VMs to represent operator units, complete with inventory tagging and basic monitoring setup.
Module 7: CI/CD, Automation, and Deployment Pipelines
- Connecting Terraform with CI/CD platforms such as GitHub Actions and Azure DevOps pipelines.
- Automating plan and apply processes while securing secrets and service principals.
- Introduction to 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 in a sandbox subscription.
Module 8: Security, Secrets, and Operational Practices
- Managing sensitive data through Azure Key Vault integration and preventing secret leakage in state files.
- Implementing access control, RBAC, and least privilege principles for automation accounts.
- Performing drift detection, state reconciliation, and basic remediation tasks.
- Reviewing a comprehensive checklist for backup, auditing, and governance of Terraform-managed infrastructure.
Module 9: Testing, Debugging, and Troubleshooting
- Techniques for 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 activity: running validation and linting tools and resolving any discovered issues.
Module 10: Capstone Project: Hybrid Deployment Scenario
- Design challenge: planning an on-premises + Azure device deployment using the patterns learned throughout the course.
- Implementation of core components using modules, remote state, and CI/CD pipeline snippets.
- Presenting the solution, discussing architectural trade-offs, and reviewing the operational runbook.
Summary and Next Steps
Requirements
- A solid grasp of fundamental networking and virtualization concepts.
- Comfortable navigating the command line in either Windows or Linux environments.
- Basic familiarity with cloud or on-premises infrastructure principles.
Target Audience
- System administrators and platform engineers looking to expand their automation capabilities.
- DevOps practitioners starting their journey into Infrastructure as Code.
- IT teams responsible for managing hybrid infrastructures that blend 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