https://github.com/btkrausen/terraform-codespaces
HashiCorp Terraform training environment using GitHub Codespaces. This pre-configured development environment includes the latest version of Terraform CLI along with AWS and Azure CLIs for hands-on infrastructure as code exercises.
https://github.com/btkrausen/terraform-codespaces
hands-on labs terraform training
Last synced: about 2 months ago
JSON representation
HashiCorp Terraform training environment using GitHub Codespaces. This pre-configured development environment includes the latest version of Terraform CLI along with AWS and Azure CLIs for hands-on infrastructure as code exercises.
- Host: GitHub
- URL: https://github.com/btkrausen/terraform-codespaces
- Owner: btkrausen
- License: other
- Created: 2024-12-26T20:37:05.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2025-05-14T15:28:20.000Z (5 months ago)
- Last Synced: 2025-05-14T16:37:25.633Z (5 months ago)
- Topics: hands-on, labs, terraform, training
- Language: HCL
- Homepage: https://btk.me/btk
- Size: 248 KB
- Stars: 23
- Watchers: 2
- Forks: 10
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
## Support My Content Here:
[](https://btk.me/tb) [](https://github.com/sponsors/btkrausen?frequency=one-time&sponsor=btkrausen)
## HashiCorp Terraform Labs
[](https://releases.hashicorp.com/terraform/1.11.3/)
[](https://github.com/btkrausen/terraform-testing/actions/workflows/aws_lab_validation.yml)Welcome to this HashiCorp Terraform lab repo, where you can get hands-on experience with **HashiCorp Terraform** using GitHub Codespaces. In this repository, you’ll find a variety of [labs](./labs) that walk you through learning and using HashiCorp Terraform in different scenarios.
**Note:** GitHub provides users with 120 core hours for FREE per month. [Check your current consumption of hours here](https://github.com/settings/billing/summary#:~:text=%240.00-,Codespaces,-Included%20quotas%20reset). Additionally, you can [set a limit of spending for Codespaces on your account here](https://github.com/settings/billing/spending_limit#:~:text=Spending%20limit%20alerts-,Codespaces,-Limit%20spending).
## What’s Included
- A **pre-configured** development container that installs Terraform and prerequisites in your Codespace.
- Multiple labs, each with its own `README.md` and step-by-step instructions.
- Example files, scripts, and configurations to help you practice Terraform's core features.### Built with:
## How to Use
1. **Create a Codespace** from this repo (click the button below or go to the “Code” drop-down, select “Codespaces,” and create a new one).
2. Once the Codespace is running, open the integrated terminal.
3. Follow the instructions in each **lab** to complete the exercises.[](https://codespaces.new/btkrausen/terraform-codespaces)
## Labs Overview
Below are different labs you can explore. Each link points to a specific lab file or folder within this repository.
Each lab is available in AWS, Azure, or GitHub - allowing you to choose the platform you're most comfortable with to learn.
## 💻 HashiCorp Terraform Basics 💻
Labs 1 through 5 are designed to be completed in order as each builds on the previous lab.
| **#** | **Lab Name** | **AWS** | **Azure** | **GitHub** |
| :---: | :-------------------------------------------- | :-----------------------------------------------------------------: | :---------------------------------------------------------------------: | :-----------------------------------------------------------------------: |
| 1 | Getting Started with Terraform | [AWS](./labs/lab_01_getting_started_with_terraform/aws.md) | [Azure](./labs/lab_01_getting_started_with_terraform/azure.md) | [GitHub](./labs/lab_01_getting_started_with_terraform/github.md) |
| 2 | Create Your First Resource | [AWS](./labs/lab_02_create_your_first_resource/aws.md) | [Azure](./labs/lab_02_create_your_first_resource/azure.md) | [GitHub](./labs/lab_02_create_your_first_resource/github.md) |
| 3 | Working with Variables and Dependencies | [AWS](./labs/lab_03_working_with_variables_and_dependencies/aws.md) | [Azure](./labs/lab_03_working_with_variables_and_dependencies/azure.md) | [GitHub](./labs/lab_03_working_with_variables_and_dependencies/github.md) |
| 4 | Managing Mulitple Resources | [AWS](./labs/lab_04_managing_mulitple_resources/aws.md) | [Azure](./labs/lab_04_managing_mulitple_resources/azure.md) | [GitHub](./labs/lab_04_managing_mulitple_resources/github.md) |
| 5 | Working with State, Data Sources, and the CLI | [AWS](./labs/lab_05_working_with_state_data_sources_and_cli/aws.md) | [Azure](./labs/lab_05_working_with_state_data_sources_and_cli/azure.md) | [GitHub](./labs/lab_05_working_with_state_data_sources_and_cli/github.md) |
## ✨ Making Code More Dynamic and Reusable ✨
These labs are fully self-contained and can be completed in any order.
| **#** | **Lab Name** | **AWS** | **Azure** | **GitHub** |
| :---: | :---------------------------------------------------- | :----------------------------------------------------------------------------: | :----------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------: |
| 6 | Making Code Dynamic and Reusable | [AWS](./labs/lab_06_making_code_dynamic_and_reusable/AWS/aws.md) | [Azure](./labs/lab_06_making_code_dynamic_and_reusable/AZURE/azure.md) | [GitHub](./labs/lab_06_making_code_dynamic_and_reusable/GITHUB/github.md) |
| 7 | Simplify Code with `Local` Values | [AWS](./labs/lab_07_simplify_code_with_local_values/AWS/aws.md) | [Azure](./labs/lab_07_simplify_code_with_local_values/AZURE/azure.md) | [GitHub](./labs/lab_07_simplify_code_with_local_values/GITHUB/github.md) |
| 8 | Create Mulitple Resources with `count` | [AWS](./labs/lab_08_create_mulitple_resources_with_count/AWS/aws.md) | [Azure](./labs/lab_08_create_mulitple_resources_with_count/AZURE/azure.md) | [GitHub](./labs/lab_08_create_mulitple_resources_with_count/GITHUB/github.md*) |
| 9 | Deploy Mulitple Resources with `for_each` | [AWS](./labs/lab_09_deploying_mulitple_resources_with_for_each/AWS/aws.md) | [Azure](./labs/lab_09_deploying_mulitple_resources_with_for_each/AZURE/azure.md) | [GitHub](./labs/lab_09_deploying_mulitple_resources_with_for_each/GITHUB/github.md) |
| 10 | Managing Explicit Dependencies with `depends_on` | [AWS](./labs/lab_10_managing_explicit_dependencies_with_depends_on/AWS/aws.md) | [Azure](./labs/lab_10_managing_explicit_dependencies_with_depends_on/AZURE/azure.md) | [GitHub](./labs/lab_10_managing_explicit_dependencies_with_depends_on/GITHUB/github.md) |
| 11 | Using Multiple Providers for Mulitple Regions | [AWS](./labs/lab_11_using_multiple_providers_for_mulitple_regions/AWS/aws.md) | [Azure](./labs/lab_11_using_multiple_providers_for_mulitple_regions/AZURE/azure.md) | [GitHub](./labs/lab_11_using_multiple_providers_for_mulitple_regions/GITHUB/github.md) |
| 12 | Managing Resource Lifecycle using `lifecycle` | [AWS](./labs/lab_12_managing_resource_lifecycle_using_lifecyle/AWS/aws.md) | [Azure](./labs/lab_12_managing_resource_lifecycle_using_lifecyle/AZURE/azure.md) | [GitHub](./labs/lab_12_managing_resource_lifecycle_using_lifecyle/GITHUB/github.md) |
| 13 | Using Terraform Built-In Functions | [AWS](./labs/lab_13_using_terraform_built_in_functions/AWS/aws.md) | [Azure](./labs/lab_13_using_terraform_built_in_functions/AZURE/azure.md) | [GitHub](./labs/lab_13_using_terraform_built_in_functions/GITHUB/github.md) |
## ⚙️ Working with Terraform Modules ⚙️
These labs are fully self-contained and can be completed in any order.
| **#** | **Lab Name** | **AWS** | **Azure** | **GitHub** |
| :---: | :-------------------------------------- | :----------------------------------------------------------: | :----------------------------------------------------------------: | :-------------------------------------------------------------------: |
| 14 | Using Modules in the Terraform Registry | [AWS](./labs/lab_14_using_the_terraform_registry/AWS/aws.md) | [Azure](./labs/lab_14_using_the_terraform_registry/AZURE/azure.md) | [GitHub](./labs/lab_14_using_the_terraform_registry/GITHUB/github.md) |
| 15 | Build Your Own Local Modules | [AWS](./labs/lab_15_build_your_own_modules/AWS/aws.md) | [Azure](./labs/lab_15_build_your_own_modules/AZURE/azure.md) | [GitHub](./labs/lab_15_build_your_own_modules/GITHUB/github.md) |
## 🔧 Managing and Maintaining Your Terraform Code 🔧
These labs are fully self-contained and can be completed in any order.
| **#** | **Lab Name** | **AWS** | **Azure** | **GitHub** |
| :---: | :------------------------------- | :--------------------------------------------------------------: | :--------------------------------------------------------------------: | :-----------------------------------------------------------------------: |
| 16 | Replacing a Single Resource | [AWS](./labs/lab_16_replace_a_single_resource/AWS/aws.md) | [Azure](./labs/lab_16_replace_a_single_resource/AZURE/azure.md) | [GitHub](./labs/lab_16_replace_a_single_resource/GITHUB/github.md) |
| 17 | Upgrading a Provider and Module | Coming Soon | Coming Soon | Coming Soon |
| 18 | Importing an Existing Resource | Coming Soon | Coming Soon | Coming Soon |
| 19 | Migrating State to a New Backend | Coming Soon | Coming Soon | Coming Soon |
| 20 | Using Terraform Workspaces | Coming Soon | Coming Soon | Coming Soon |
| 21 | Using Terraform Logging | Coming Soon | Coming Soon | Coming Soon |---
## Contributing
If you’d like to add more labs or improve these, feel free to fork this repo or open a pull request. Feedback and contributions are always welcome!
---
Enjoy your journey with Terraform!