This repository contains my learning journey and hands-on practice while completing a comprehensive Terraform Learning Path focused on Infrastructure as Code (IaC). All the content here is based on structured lessons and practical exercises from a Terraform course, organized to reflect a progressive understanding from fundamentals to more advanced concepts.
The goal of this repository is to serve as a reference, practice ground, and knowledge base for Terraform concepts, syntax, and best practices.
- Incremental examples following Terraform best practices
- Clear separation of concepts (providers, variables, functions, modules, etc.)
- Practical infrastructure definitions written in HCL
- Reusable and maintainable Terraform configurations
- Learning-oriented structure aligned with a real-world Terraform workflow
- Overview of Infrastructure as Code (IaC)
- Why Terraform is used in modern cloud and DevOps environments
- Core benefits: automation, consistency, and scalability
- What IaC is and how it compares to manual infrastructure management
- Terraform architecture and workflow
- Terraform CLI basics
- Providers and how Terraform interacts with cloud platforms
- Terraform configuration files (
.tf) - Resources and their lifecycle
- Providers configuration
- Terraform initialization (
terraform init) - Planning and applying changes (
terraform plan,terraform apply) - Terraform state and its importance
- Understanding dependencies between resources
- Managing state files locally and remotely
- Best practices for organizing Terraform code
- Resource targeting and lifecycle rules
- Handling updates and infrastructure changes safely
- Formatting and validating Terraform code
- What provisioners are and when to use them
local-execandremote-exec- Common use cases and limitations
- Why provisioners should be used cautiously
- Input variables and variable definitions
- Variable types (string, number, bool, list, map, object)
- Default values and validation rules
- Output values
- Using variables to make configurations reusable and flexible
- Built-in Terraform functions
- String, numeric, and collection functions
- Conditional expressions
- Practical examples to manipulate data dynamically
- What modules are and why they matter
- Creating reusable modules
- Module inputs and outputs
- Organizing Terraform projects with modules
- Terraform workspaces
- Managing multiple environments (e.g., dev, staging, prod)
- Terraform
- HCL (HashiCorp Configuration Language)
- AWS
- Command-line tools
This repository is intended for:
- Reinforcing Terraform concepts through practice
- Serving as a personal reference for future projects
- Demonstrating knowledge of Terraform and IaC principles
- The code in this repository is focused on learning and experimentation.
- Best practices are followed whenever possible to reflect real-world usage.
- Advanced projects and final implementations are maintained in separate repositories.
All the content and exercises in this repository are the result of my studies from the Udemy course:
Ultimate Terraform on AWS Bootcamp | Beginner to Advanced
This repository reflects the concepts, practices, and progression taught throughout the course, adapted into my own hands-on implementations and organized for long-term reference.
Juan David Pacheco Vargas Telematics Engineering Student & Cloud Enthusiast