Course Code:
kpmgterraadv1
Duration:
28 hours
Prerequisites:
Bespoke course for KMPG International
Course Outline:
Introduction
Azure → Terraform (key differences)
- Store Terraform state in Azure
- Azure Terraform provider, walkthrough, data and resources
- AzAPI provider
- Azure Export for Terraform
- Comparing Terraform and ARM/Bicep
- Advanced scenarios
- Landing zone and reference architectures with Terraform in Azure
- VScode plugin for Terraform
Recap of Terraform basics
Advanced Terraform Syntax and Constructs
- Deep dive into Terraform syntax
- Advanced loops with for_each and count
- Utilizing maps and lists for dynamic configurations
Expressions and Dynamic Configurations
- Basic expressions and their use cases
- Advanced expressions for complex infrastructure setups
- Practical exercises on expressions
Terraform Modules Best Practices
- Local vs shared modules: When to use each
- Structuring modules for reusability and maintainability
- Versioning and managing module sources
Terraform Best Practices and Patterns
- Review of instance index keys for state management
- Best practices for writing and organizing Terraform code
- Ensuring idempotency and minimizing side effects
Managing Terraform State
- Importing resources and understanding the state file
- State locking, state backends, and remote state management
- Handling state file in distributed environments
Keeping Up with Terraform Updates
- Reviewing documentation alongside new Terraform releases
- Strategies for upgrading Terraform versions
- Dealing with deprecations and migration paths
Integrating Terraform with CI/CD Pipelines
- Overview of YAML and pipeline configurations
- Setting up Terraform with popular CI/CD tools
- Automating Terraform workflows in pipelines
Advanced Troubleshooting and Debugging
- Systematic approaches to troubleshooting Terraform plans and applies
- Debugging common and advanced errors in Terraform
- Using logs and verbose output for error resolution
Outputs and Data Flow in Terraform
- Understanding and utilizing outputs in Terraform
- Data flow between modules and root configurations
- Securing sensitive information in outputs
Conditional Logic in Terraform
- Writing conditional statements with count, for_each, and if
- Conditional creation of resources
- Use cases for conditional logic in modules
Running Terraform Locally
- Setting up a local Terraform environment
- Running and testing Terraform code on local machines
- Local development best practices
Handling Circular Dependencies
- Identifying and resolving circular dependencies
- Refactoring code to prevent dependency cycles
- Advanced techniques for dependency management
Summary and Next Steps