Course Outline
Module 1: Overview of Infrastructure as Code and Terraform
- Exploring IaC concepts and their advantages in on-premises and hybrid settings.
- Introduction to Terraform: understanding providers, resources, state, and the resource lifecycle.
- Setting up Terraform, Azure CLI, and other necessary utilities.
- Practical exercise: creating and applying a basic Terraform configuration locally.
Module 2: Fundamentals of HashiCorp Configuration Language (HCL) and Setup
- Deep dive into HCL syntax, including resources, attributes, and expressions.
- Working with variables, outputs, locals, and type constraints.
- Mastering the Terraform CLI: using init, plan, apply, destroy, and fmt commands.
- Hands-on lab: developing a parameterized configuration for both on-prem and Azure resources.
Module 3: Core Concepts of Providers, Resources, and the Azure Provider
- Understanding provider architecture and configuration, specifically the AzureRM provider.
- Translating infrastructure elements (networking, compute, storage) into Terraform resources.
- Handling Azure authentication and service principals for automated workflows.
- Practical exercise: provisioning an Azure virtual network and a basic VM using Terraform.
Module 4: State Management, Backends, and Team Collaboration
- Exploring Terraform state: its purpose, structure, and lifecycle implications.
- Implementing remote backends via Azure Storage Accounts and applying state locking strategies.
- Managing workspaces, environments, and establishing collaboration patterns for teams.
- Lab exercise: configuring remote state in Azure Storage and simulating a multi-user workflow.
Module 5: Modularity, Reusability, and Industry Best Practices
- Creating and utilizing Terraform modules effectively.
- Defining module inputs/outputs, managing versions, and following registry standards.
- Establishing best practices for folder structures, naming conventions, and repository maintainability.
- Hands-on exercise: building a reusable module for an Azure VM with disks and networking, then testing it across different environments.
Module 6: Azure Virtual Device Management and On-Premise Integration
- Controlling Azure Virtual Machines, Virtual Desktop components, and device lifecycles through Terraform.
- Applying patterns for hybrid device management, linking on-prem resources with Azure-managed devices.
- Integrating storage or device management systems using data sources and external providers.
- Lab exercise: deploying a fleet of Azure VMs to represent operator units, including inventory tagging and basic monitoring setup.
Module 7: CI/CD Integration, Automation, and Deployment Pipelines
- Connecting Terraform with CI/CD platforms like GitHub Actions and Azure DevOps pipelines.
- Automating plan and apply processes with secure secrets and service principals.
- Introduction to Policy as Code (using Sentinel or Open Policy Agent patterns) and pre-deployment validation checks.
- Hands-on exercise: developing a GitHub Actions workflow to plan and apply Terraform against a sandbox subscription.
Module 8: Security, Secret Management, and Operational Standards
- Securing sensitive data: integrating Azure Key Vault and preventing exposure of secrets in state files.
- Implementing access control, RBAC, and least privilege principles for automation accounts.
- Detecting drift, reconciling state, and applying basic remediation techniques.
- Operational checklist: ensuring backup, auditing, and governance for infrastructure managed by Terraform.
Module 9: Testing, Debugging, and Troubleshooting Techniques
- Diagnosing configuration issues and interpreting plan diffs effectively.
- Implementing unit and integration testing methods using tools like terraform validate, tflint, and kitchen-terraform.
- Identifying common error patterns and developing resolution strategies.
- Lab exercise: executing validation and linting tools to identify and fix configuration issues.
Module 10: Capstone Project — Hybrid Deployment Scenario
- Design challenge: planning an on-prem + Azure device deployment using the patterns learned throughout the course.
- Building core components using modules, remote state, and CI/CD pipeline snippets.
- Presenting the solution, analyzing trade-offs, and reviewing the operational runbook.
Course Summary and Recommended Next Steps
Requirements
- A foundational understanding of networking and virtualization principles.
- Proficiency with Windows or Linux command-line interfaces.
- Basic familiarity with cloud or on-premises infrastructure architecture.
Target Audience
- System administrators and platform engineers.
- DevOps professionals initiating their journey with Infrastructure as Code.
- IT teams responsible for managing hybrid infrastructures combining 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