Skip to content

swinalwaghmare/Terraform-journey

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

61 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚀 Terraform Journey

This repository is a comprehensive document of my personal learning path with Terraform. It's a hands-on collection of experiments, core concepts, design patterns, and real-world Infrastructure as Code (IaC) projects, primarily focused on AWS cloud automation.


📖 Table of Contents


💡 Overview

The goal of this repository is to systematically learn and demonstrate various Terraform functionalities, from the basics of code syntax and state management to advanced topics like modules, provisioners, and multi-cloud/multi-account setups. Each numbered directory represents a key concept explored in depth.


🛠️ Prerequisites

To run the configurations in this repository, you'll need the following installed and configured:

  1. Terraform CLI
  2. AWS Account and AWS CLI (with configured credentials).
  3. git

🗺️ Journey Outline

The repository is structured into sequential folders to follow a logical learning progression.

Section Folders Topics Covered
I. Fundamentals Basic-Code Basic HCL syntax, resources, and providers.
terraform-setup-files Working with variables, outputs, and local files.
terraform-statefile Understanding and managing the local state file.
state-locking Implementing remote backend (like S3/DynamoDB) to prevent concurrent state modifications.
II. Core Concepts Custom-Networking, Target-resources, lifecycle-rules Custom Networking, lifecycle rules, and targeting specific resources.
import Importing existing cloud resources into Terraform state.
modules Creating and consuming reusable infrastructure modules.
Provisioners Using local-exec and remote-exec to execute scripts.
III. Advanced Topics Workspace, locals, multi-account, multiple-provider, taint Workspace management, locals for expressions, taint command, IAM, multi-account, and multiple provider configurations.
IV. Resource Examples RDS Deploying a managed Relational Database Service.
lambda Automating the deployment of AWS Lambda functions.
IAM Created a custom VPC network, attached an IAM role to an EC2 instance, and configured it with the CloudWatch Agent for monitoring using user data and null resource block.

💻 How to Use

  1. Clone the repository:
    git clone https://github.com/Swinalwaghmare/Terraform-journey.git
    cd Terraform-journey
  2. Navigate to a specific concept folder:
    cd [07]-modules 
    # or cd Project/3-Tier-Project
  3. Initialize Terraform:
    terraform init
  4. Review the execution plan:
    terraform plan
  5. Apply the configuration:
    terraform apply
  6. Clean up resources (when done):
    terraform destroy

🏗️ Project

The Project/3-Tier-Project directory contains a comprehensive example of a real-world architecture.

This project demonstrates deploying a complete application stack, typically consisting of:

  • Presentation Tier: Load Balancer and Auto Scaling Group for web servers.
  • Application Tier: Private subnets for application servers.
  • Data Tier: Private subnets for a managed database (like RDS).
  • Configured VPC, Subnets, Route Tables, and Security Groups for secure networking.

About

My learning path with Terraform: documenting experiments, patterns, and real-world cloud automation projects.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors