Course Outline
Module 1: Introduction to Infrastructure as Code and Terraform
- Understanding IaC concepts and their advantages in on-premises and hybrid settings.
- Overview of Terraform: exploring providers, resources, state management, and the resource lifecycle.
- Installation of Terraform, Azure CLI, and other necessary tools.
- Practical exercise: writing and applying a basic Terraform configuration locally.
Module 2: HashiCorp Configuration Language (HCL) and Configuration Basics
- Mastering HCL syntax, including resources, attributes, and expressions.
- Working with variables, outputs, locals, and type constraints.
- Utilizing the Terraform CLI for commands such as init, plan, apply, destroy, and fmt.
- Hands-on lab: constructing a parameterized configuration for both an on-prem resource and an Azure resource.
Module 3: Providers, Resources, and Azure Provider Fundamentals
- Comprehending providers and configuring them, specifically the AzureRM provider.
- Mapping infrastructure components (networking, compute, storage) to Terraform resources.
- Handling Azure authentication and setting up service principals for automation.
- Practical task: provisioning an Azure virtual network and a basic VM via Terraform.
Module 4: State Management, Backends, and Collaboration
- The role, format, and lifecycle considerations of Terraform state.
- Implementing remote backends using Azure Storage Accounts and strategies for state locking.
- Managing workspaces, environments, and effective collaboration patterns for teams.
- Lab: 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.
- Managing module inputs and outputs, versioning, and registry workflows.
- Establishing folder layouts, naming conventions, and a maintainable repository structure.
- Hands-on: 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-Prem Integration
- Controlling Azure Virtual Machines, Virtual Desktop components, and device lifecycles using Terraform.
- Strategies for hybrid device management, linking on-prem resources with Azure-managed devices.
- Integrating volumetric or device management systems via data sources and external providers.
- Lab: deploying a fleet of Azure VMs to represent operator units, including inventory tagging and basic monitoring configuration.
Module 7: CI/CD, Automation, and Deployment Pipelines
- Connecting Terraform to CI/CD platforms such as GitHub Actions and Azure DevOps pipelines.
- Automating plan and apply processes with secure secrets and service principals.
- Introducing Policy as Code concepts (such as Sentinel or Open Policy Agent) and pre-deployment checks.
- Practical exercise: creating a GitHub Actions workflow to plan and apply Terraform to a sandbox subscription.
Module 8: Security, Secrets, and Operational Practices
- Managing secrets through Azure Key Vault integration and preventing sensitive data exposure in state files.
- Implementing access control, RBAC, and least privilege principles for automation accounts.
- Detecting drift, reconciling state, and applying basic remediation techniques.
- Reviewing checklists for backup, auditing, and governance of Terraform-managed infrastructure.
Module 9: Testing, Debugging, and Troubleshooting
- Debugging Terraform configurations and effectively interpreting plan diffs.
- Applying unit and integration testing methods using tools like terraform validate, tflint, and kitchen-terraform.
- Identifying common error patterns and strategies for resolution.
- Lab: running validation and linting tools to identify and correct issues.
Module 10: Capstone Project — Hybrid Deployment Scenario
- Design challenge: planning an on-prem plus Azure device deployment using the patterns learned.
- Implementing core components using modules, remote state, and CI/CD pipeline segments.
- Presenting the solution, discussing trade-offs, and reviewing the operational runbook.
Summary and Next Steps
Requirements
- A solid grasp of basic networking and virtualization concepts.
- Proficiency in using either Windows or Linux command-line interfaces.
- Familiarity with the fundamentals of cloud or on-premises infrastructure.
Target Audience
- System administrators and platform engineers.
- DevOps practitioners starting their journey with Infrastructure as Code.
- IT teams responsible for managing hybrid infrastructure, encompassing both 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