Course Outline
Module 1: Introduction to Infrastructure as Code and Terraform
- Concepts and benefits of Infrastructure as Code (IaC) for on-premises and hybrid environments for government operations.
- Overview of Terraform: providers, resources, state management, and lifecycle.
- Installation instructions for Terraform, Azure CLI, and other required tools.
- First hands-on exercise: writing and applying a simple Terraform configuration locally.
Module 2: HashiCorp Configuration Language (HCL) and Configuration Basics
- Syntax, resources, attributes, and expressions in HCL for effective configuration management.
- Utilizing variables, outputs, locals, and type constraints to enhance configurability.
- Using the Terraform CLI commands: init, plan, apply, destroy, and fmt.
- Hands-on lab: building a parameterized configuration for an on-prem resource and an Azure resource.
Module 3: Providers, Resources, and Azure Provider Fundamentals
- Understanding providers and their configuration, with a focus on the AzureRM provider for government use cases.
- Mapping infrastructure components to Terraform resources (networking, compute, storage).
- Managing Azure authentication and service principals to support automation in government environments.
- Hands-on: provisioning an Azure virtual network and a simple VM using Terraform.
Module 4: State Management, Backends, and Collaboration
- Purpose, format, and lifecycle considerations of the Terraform state file for government projects.
- Configuring remote backends with Azure Storage Account and implementing state locking strategies.
- Utilizing workspaces, environments, and collaboration patterns to support team workflows in government settings.
- Lab: configuring remote state storage in Azure and performing multi-user workflows for enhanced collaboration.
Module 5: Modularization, Reusability, and Best Practices
- Authoring and consuming Terraform modules to promote reusability and maintainability.
- Managing module inputs/outputs, versioning, and registry patterns for government projects.
- Best practices for folder layout, naming conventions, and repository structure to ensure maintainability.
- Hands-on: creating a reusable module for Azure VM + disk + network and testing it across different environments.
Module 6: Managing Azure Virtual Devices and On-Prem Integration
- Managing Azure Virtual Machines, Virtual Desktop components, and device lifecycle using Terraform in government settings.
- Hybrid device management patterns for integrating on-prem resources with Azure-managed devices.
- Integrating volumetric or device management systems through data sources and external providers for enhanced governance.
- Lab: deploying an Azure VM fleet to represent operator units, configuring inventory tagging, and setting up basic monitoring.
Module 7: CI/CD, Automation, and Deployment Pipelines
- Integrating Terraform with continuous integration and delivery (CI/CD) tools such as GitHub Actions and Azure DevOps pipelines for government projects.
- Automating the plan and apply processes while securing secrets and service principals for enhanced security.
- Basics of Policy as Code using Sentinel or Open Policy Agent patterns, including pre-deploy checks to ensure compliance.
- Hands-on: creating a simple GitHub Actions workflow to plan and apply Terraform configurations in a sandbox subscription.
Module 8: Security, Secrets, and Operational Practices
- Managing secrets securely with Azure Key Vault integration and preventing sensitive data from being stored in state files for government operations.
- Implementing access control, role-based access control (RBAC), and least privilege principles for automation accounts.
- Techniques for drift detection, state reconciliation, and basic remediation practices to ensure infrastructure integrity.
- Checklist: backup strategies, auditing procedures, and governance practices for Terraform-managed infrastructure in government settings.
Module 9: Testing, Debugging, and Troubleshooting
- Techniques for debugging Terraform configurations and effectively reading plan diffs to identify issues.
- Approaches to unit and integration testing using tools like terraform validate, tflint, and kitchen-terraform.
- Common error patterns and resolution strategies to streamline troubleshooting processes for government projects.
- Lab: running validation and linting tools and fixing discovered issues in Terraform configurations.
Module 10: Capstone Project — Hybrid Deployment Scenario
- Design exercise: planning an on-prem + Azure device deployment using learned patterns and best practices for government environments.
- Implementing core components using modules, remote state, and CI/CD pipeline snippets to ensure a robust solution.
- Presenting the solution, discussing trade-offs, and reviewing the runbook for ongoing operations in government settings.
Summary and Next Steps
Requirements
- A foundational understanding of networking and virtualization principles
- Proficiency with Windows or Linux command-line interfaces
- Essential knowledge of cloud and on-premises infrastructure concepts
Audience
- System administrators and platform engineers for government
- DevOps professionals initiating Infrastructure as Code practices
- IT teams responsible for hybrid (on-premises + 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