Detailed Course Outline
Part 1: Infrastructure as Code
In this section, we will introduce the benefits that Infrastructure as Code (IaC) can bring to organizations and how IaC fits within modern DevOps best practices.
- DevOps and GitOps
- Principles of Infrastructure as Code
- Applying Infrastructure as Code in DevOps
- Infrastructure as Code best practices
- Benefits of Infrastructure as Code
- The case for Terraform
Part 2: Terraform Overview
This section provides an overview of Terraform concepts and vocabulary and instructs how Terraform manages infrastructure configuration in cloud environments.
- Terraform configuration language overview
- Terraform CLI
- The lifecycle of a configuration
- State storage – local versus remote
- Connecting to Azure
Hands-on Labs:
- Setting up a Terraform project
Part 3: Azure Resources
In this section participants will be getting hands-on practice using Terraform to create a simple application environment in Azure, learning the essential constructs in Terraform for defining resources.
- Resource metadata and naming best practices
- Subscription and resource group
- Networking resources (VNet, subnet, network security group)
- Compute resources (virtual machine)
- Storage resources (storage account, file share, blob storage)
- Database resources (SQL database)
- Variables
- Outputs
Hands-on Labs:
- Deploying a VNet
- Adding a virtual machine into your VNet
- Adding storage and a database
- Including variables in your code
- Using Terraform commands to validate and inspect your configuration
Part 4: Terraform Programming
This section introduces programming constructs within Terraform that enable you to add more control and flexibility in defining resources.
- Control operations (count, loops, conditional, depends_on, etc.)
- Data structures (maps, lists, random_string, etc.)
- Data sources
- Functions (e.g., lookup, coalesce, join, merge, etc.)
- Variable validation
- Debugging Terraform
Hands-on Labs:
- Managing multiple resources through count and loops
- Using maps and lists in your code
- Using functions in your code
- Using Terraform CLI and state manipulation to debug your configuration
Part 5: Modules
This section shows how modules can be used to create reusable components in Terraform and teaches best practices in organizing Terraform code.
- Purpose of modules
- Modules code file organization structure
- Module structure
- Module sources and versioning
- Nested modules
- Publishing modules
Hands-on Labs:
- Refactoring your earlier lab code to a module
- Using Azure modules (subscription, metadata, resource group, virtual network)
Part 6: Wrapping Up
This section wraps up the course with reviews to reinforce what you have learned.
- Reference material to learn more
- Course review
- Next steps