{"id":24997933,"url":"https://github.com/aadi-sonwane/terraform40days","last_synced_at":"2026-05-01T09:32:43.284Z","repository":{"id":275635542,"uuid":"926701655","full_name":"Aadi-Sonwane/Terraform40Days","owner":"Aadi-Sonwane","description":"Step-by-step guide and hands-on examples to get started with Terraform, covering essential concepts and best practices for cloud infrastructure provisioning.","archived":false,"fork":false,"pushed_at":"2025-02-03T18:08:16.000Z","size":2,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-03T19:24:24.421Z","etag":null,"topics":["aws","infrastructure-as-code","terraform"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Aadi-Sonwane.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-02-03T18:04:06.000Z","updated_at":"2025-02-03T18:11:46.000Z","dependencies_parsed_at":"2025-02-03T19:24:27.780Z","dependency_job_id":"6350a093-d9f9-47b9-a1b4-3245cd74e84d","html_url":"https://github.com/Aadi-Sonwane/Terraform40Days","commit_stats":null,"previous_names":["aadi-sonwane/terraform40days"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Aadi-Sonwane%2FTerraform40Days","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Aadi-Sonwane%2FTerraform40Days/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Aadi-Sonwane%2FTerraform40Days/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Aadi-Sonwane%2FTerraform40Days/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Aadi-Sonwane","download_url":"https://codeload.github.com/Aadi-Sonwane/Terraform40Days/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246210028,"owners_count":20741100,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aws","infrastructure-as-code","terraform"],"created_at":"2025-02-04T17:26:42.384Z","updated_at":"2026-05-01T09:32:43.275Z","avatar_url":"https://github.com/Aadi-Sonwane.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# 40-Day Hands-On Learning Schedule\n\n\n### Day 1: Terraform Installation \u0026 Basic Commands - Create a Local File\n\n- Understand the basic Terraform workflow: `init`, `plan`, `apply`, `destroy`.\n- **Hands-On:**\n  - Install Terraform.\n  - Create a `main.tf` file with a `local_file` resource.\n  - Run the following commands:\n    - `terraform init`\n    - `terraform plan`\n    - `terraform apply`\n  - Verify the file creation.\n  - Run `terraform destroy` to clean up.\n\n---\n\n### Day 2: AWS Provider - Configure Your Region\n\n- Learn about Terraform Providers and the AWS Provider.\n- **Hands-On:**\n  - Configure the `aws` provider in your `main.tf`, specifying your desired region.\n  - Ensure your AWS credentials are set using either:\n    - Environment variables, or\n    - `aws configure` via the AWS CLI.\n\n---\n\n### Day 3: AWS S3 Bucket - Create, Upload, Enable Versioning\n\n- Understand the `aws_s3_bucket` and `aws_s3_bucket_versioning` resources.\n- **Hands-On:**\n  - Define these resources in your `main.tf`.\n  - Run `terraform apply` to provision the S3 bucket.\n  - Use the AWS CLI or Console to upload a file and verify versioning.\n  - Run `terraform destroy` to clean up.\n\n---\n\n### Day 4: Variables - Parameterize Your S3 Bucket Name\n\n- Learn how to define and use input variables in `variables.tf`.\n- **Hands-On:**\n  - Create a `variables.tf` file with a variable for the bucket name.\n  - Update the `aws_s3_bucket` resource to use this variable.\n  - Provide a value in `terraform.tfvars` or via `-var` flag on the command line.\n  - Apply and verify the setup.\n\n---\n\n### Day 5: Output Values \u0026 Data Source - Fetch S3 Bucket ARN\n\n- Understand output values and data sources.\n- **Hands-On:**\n  - Define an `output` to export the S3 bucket ARN.\n  - Use the `aws_s3_bucket` data source to fetch the ARN.\n  - Run `terraform apply` and observe the output values in your terminal.\n\n\n\n### Day 6: Terraform State - Inspect and Understand Local State\n\n- Learn about the Terraform state file: `terraform.tfstate`.\n- **Hands-On:**\n  - Apply a configuration to create an S3 bucket.\n  - Inspect the `terraform.tfstate` file to understand what Terraform tracks.\n  - Modify the bucket (e.g., add tags) and re-run `terraform apply`.\n  - Observe the changes in the state file.\n\n---\n\n### Day 7: Basic VPC Setup - Create VPC and Subnet\n\n- Understand the `aws_vpc` and `aws_subnet` resources.\n- **Hands-On:**\n  - Define a basic VPC and a public subnet in `main.tf`.\n  - Run `terraform apply` to provision the resources.\n  - Verify the VPC and subnet in the AWS Console.\n\n---\n\n### Day 8: Security Group - Allow SSH and HTTP Traffic\n\n- Learn about the `aws_security_group` resource.\n- **Hands-On:**\n  - Create a security group allowing:\n    - Inbound SSH (port `22`)\n    - HTTP (port `80`) traffic\n  - Apply the configuration and verify the rules in the AWS Console.\n\n---\n\n### Day 9: EC2 Instance - Launch in Your VPC\n\n- Understand the `aws_instance` resource and `aws_ami` data source.\n- **Hands-On:**\n  - Use `aws_ami` data source to fetch the latest Amazon Linux AMI.\n  - Define an `aws_instance` resource:\n    - Specify the subnet ID and security group.\n  - Run `terraform apply` and verify the instance in the AWS Console.\n\n---\n\n### Day 10: IAM Role - Grant S3 Read-Only Access to EC2\n\n- Learn about:\n  - `aws_iam_role`\n  - `aws_iam_policy`\n  - `aws_iam_policy_attachment`\n- **Hands-On:**\n  - Create an IAM role with a policy granting S3 read-only access.\n  - Attach the policy to the role.\n  - Associate the role with your EC2 instance.\n\n\n\n### Day 11: Elastic Load Balancer (ELB) - Create and Target EC2\n\n- Understand the following resources:\n  - `aws_lb`\n  - `aws_lb_target_group`\n  - `aws_lb_listener`\n  - `aws_lb_target_group_attachment`\n- **Hands-On:**\n  - Provision an Application Load Balancer (ALB).\n  - Configure it to route traffic to your EC2 instance.\n  - Verify load balancer access via public DNS.\n\n---\n\n### Day 12: Local Module - Create Reusable S3 Bucket Module\n\n- Learn how to create and use **local Terraform modules**.\n- **Hands-On:**\n  - Create a `modules/s3_bucket/` directory with:\n    - `main.tf`\n    - `variables.tf`\n    - `outputs.tf`\n  - Define a reusable S3 bucket module.\n  - Use the module in your root `main.tf`.\n\n---\n\n### Day 13: Public Module - Explore and Use a VPC Module from the Registry\n\n- Learn about the **Terraform Module Registry**.\n- **Hands-On:**\n  - Search for an AWS VPC module on the [Terraform Registry](https://registry.terraform.io/).\n  - Integrate the module into your configuration.\n  - Configure required input variables and apply the setup.\n\n---\n\n### Day 14: Remote State - Configure S3 Backend for State Storage\n\n- Understand the benefits of **remote state storage**.\n- **Hands-On:**\n  - Create an S3 bucket for storing Terraform state.\n  - Configure the backend block with:\n    ```hcl\n    backend \"s3\" {\n      bucket = \"your-terraform-state-bucket\"\n      key    = \"path/to/terraform.tfstate\"\n      region = \"your-region\"\n    }\n    ```\n  - Run `terraform init -migrate-state` to migrate local state to the S3 bucket.\n\n---\n\n### Day 15: State Locking - Set Up DynamoDB for Concurrency Control\n\n- Learn about **state locking** with **DynamoDB**.\n- **Hands-On:**\n  - Create a DynamoDB table with `LockID` as the primary key.\n  - Update the `backend \"s3\"` configuration:\n    ```hcl\n    backend \"s3\" {\n      bucket         = \"your-terraform-state-bucket\"\n      key            = \"path/to/terraform.tfstate\"\n      region         = \"your-region\"\n      dynamodb_table = \"terraform-locks\"\n    }\n    ```\n  - Run `terraform init -reconfigure` to apply backend changes.\n## Week 4: Dynamic Configuration \u0026 Information (Days 16–20)\n\n---\n\n### Day 16: Provisioner (remote-exec) - Install a Basic Web Server on EC2\n\n- Understand the usage of the `remote-exec` provisioner.\n- **Hands-On:**\n  - Add a `remote-exec` provisioner block to your `aws_instance`.\n  - Use it to install a basic web server like **Nginx**.\n  - Example:\n    ```hcl\n    provisioner \"remote-exec\" {\n      inline = [\n        \"sudo apt update\",\n        \"sudo apt install -y nginx\",\n        \"sudo systemctl start nginx\"\n      ]\n    }\n    ```\n  - Ensure your EC2 instance has SSH access set up.\n\n---\n\n### Day 17: Data Source (aws_ami) - Dynamically Lookup the Latest Amazon Linux AMI\n\n- Learn how to use filters with the `aws_ami` data source.\n- **Hands-On:**\n  - Update your `aws_instance` to use this data source:\n    ```hcl\n    data \"aws_ami\" \"amazon_linux\" {\n      most_recent = true\n\n      filter {\n        name   = \"name\"\n        values = [\"amzn2-ami-hvm-*-x86_64-gp2\"]\n      }\n\n      filter {\n        name   = \"virtualization-type\"\n        values = [\"hvm\"]\n      }\n\n      owners = [\"amazon\"]\n    }\n    ```\n  - Use `data.aws_ami.amazon_linux.id` as the `ami` value.\n\n---\n\n### Day 18: Terraform Cloud - Sign Up and Connect Your Repository\n\n- Explore **Terraform Cloud** for remote state management and collaboration.\n- **Hands-On:**\n  - Sign up for [Terraform Cloud](https://app.terraform.io/).\n  - Create a workspace and connect it to your GitHub repo.\n  - Update your project’s backend:\n    ```hcl\n    terraform {\n      backend \"remote\" {\n        organization = \"your-org\"\n\n        workspaces {\n          name = \"your-workspace\"\n        }\n      }\n    }\n    ```\n  - Run `terraform init` to configure.\n\n---\n\n### Day 19: Terraform Workspaces - Manage Dev and Prod S3 Buckets\n\n- Understand the concept of **Terraform Workspaces**.\n- **Hands-On:**\n  - Use `terraform workspace new dev` and `terraform workspace new prod`.\n  - Parameterize your bucket name using the workspace:\n    ```hcl\n    bucket = \"my-bucket-${terraform.workspace}\"\n    ```\n  - Run `terraform apply` in each workspace to create separate S3 buckets.\n\n---\n\n### Day 20: Terraform Format and Style - Use terraform fmt and Understand Style Conventions\n\n- Learn about **Terraform formatting and styling**.\n- **Hands-On:**\n  - Introduce indentation and spacing issues in your `.tf` files.\n  - Run:\n    ```bash\n    terraform fmt\n    ```\n  - Observe how Terraform auto-formats your code.\n  - Review [Terraform Style Guide](https://developer.hashicorp.com/terraform/language/syntax/style) for best practices.\n\n## Week 5: Real-World Projects - Build and Deploy (Days 21–25)\n\n---\n\n### Days 21–25: Project 1 - Basic Web Application Infrastructure\n\n#### 🎯 Goal:\nProvision a basic infrastructure for a web application, including a VPC with public and private subnets, an EC2 instance in the private subnet, and a NAT Gateway in the public subnet.\n\n---\n\n### 🧠 Concepts Covered:\n- VPC, Subnet (public \u0026 private)\n- Internet Gateway and NAT Gateway\n- Route Tables and Associations\n- EC2 Instance in a private subnet\n- Elastic IP allocation\n- Security Groups\n\n---\n\n### 🛠 Hands-On Tasks:\n\n1. **Create VPC and Subnets**\n   - Define a custom VPC.\n   - Create a **public** and a **private** subnet in different availability zones.\n\n2. **Internet Gateway \u0026 Route Table (Public)**\n   - Create and attach an Internet Gateway to your VPC.\n   - Define a public route table and associate it with the public subnet.\n\n3. **NAT Gateway \u0026 Route Table (Private)**\n   - Allocate an Elastic IP.\n   - Create a NAT Gateway in the public subnet.\n   - Create a private route table that routes internet traffic via the NAT Gateway and associate it with the private subnet.\n\n4. **EC2 Instance in Private Subnet**\n   - Launch an EC2 instance in the **private subnet**.\n   - Use a security group allowing **SSH** and **HTTP** from your IP (via NAT).\n\n5. **Test Connectivity**\n   - Use a bastion (jump) host or Session Manager to verify access to the instance.\n   - Install a basic web server (e.g., nginx) using `remote-exec`.\n\n---\n\n### ✅ Validation:\n\n- Confirm the private EC2 can access the internet via NAT Gateway.\n- Access the public subnet from your local machine (if bastion is used).\n- Use `terraform output` to get the private IP, NAT EIP, etc.\n\n---\n\n### 📦 Suggested File Structure:\n\n## Project 1: Basic Web Application Infrastructure\n\n### Folder Structure:\n\n- **project1-basic-web-infra/**\n  - **main.tf**                # Main configuration file for the infrastructure setup\n  - **variables.tf**           # Define variables for reusable configurations (e.g., VPC CIDR block)\n  - **outputs.tf**             # Output values for your infrastructure such as VPC ID, subnet IDs\n  - **vpc.tf**                 # Configuration for creating the VPC (Virtual Private Cloud)\n  - **subnets.tf**             # Configuration for subnets within the VPC (public/private)\n  - **nat_gateway.tf**         # Configuration for creating a NAT Gateway for outbound internet access\n  - **ec2.tf**                 # Configuration for launching an EC2 instance in the VPC\n  - **security.tf**            # Configuration for security groups associated with EC2 instances\n  - **terraform.tfvars**       # Define values for the variables (e.g., region, instance type, CIDR blocks)\n\n## Week 5: Real-World Projects - Build and Deploy (Days 26–30)\n\n---\n\n### Days 26–30: Project 2 - Scalable Web Application with Load Balancer and Auto Scaling\n\n#### 🎯 Goal:\nEnhance the infrastructure from Project 1 by adding an **Application Load Balancer (ALB)** and an **Auto Scaling Group (ASG)** to ensure the web application can scale automatically based on traffic.\n\n---\n\n### 🧠 Concepts Covered:\n- Application Load Balancer (ALB)\n- Target Groups and Listeners\n- Auto Scaling Group (ASG)\n- Launch Configurations/Launch Templates\n- Health Checks\n- ALB with SSL (optional, but recommended)\n\n---\n\n### 🛠 Hands-On Tasks:\n\n1. **Provision ALB**\n   - Define an **Application Load Balancer** in your VPC.\n   - Configure **listeners** for HTTP/HTTPS (optional).\n   - Set up **target groups** to register EC2 instances.\n\n2. **Security Group for ALB**\n   - Create a new **security group** for the ALB allowing inbound HTTP/HTTPS (ports 80/443).\n\n3. **Configure EC2 Auto Scaling Group**\n   - Define an **Auto Scaling Group** for EC2 instances.\n   - Use an **EC2 Launch Template** to define instance settings (AMI, instance type, security group).\n   - Attach the EC2 instances to the **target group** of the ALB.\n\n4. **Configure Health Checks**\n   - Set up **health checks** to monitor the health of instances in the target group.\n   - Ensure traffic is only routed to healthy instances.\n\n5. **Test Scalability**\n   - Monitor the **auto scaling** behavior by adjusting the desired capacity or triggering traffic.\n   - Verify that new instances are spun up and removed based on traffic load.\n\n---\n\n### ✅ Validation:\n\n- Ensure the ALB distributes traffic to EC2 instances.\n- Check that new EC2 instances are launched when the load increases and terminated when it's low.\n- Use `terraform output` to retrieve the URL for the load balancer and verify that it serves your application.\n\n---\n\n### 📦 Suggested File Structure:\n\n## Project 2: Scalable Web Application with Load Balancer and Auto Scaling\n\n### Folder Structure:\n\n- **project2-scalable-web-app/**\n  - **main.tf**                # Main configuration file for the infrastructure\n  - **variables.tf**           # Define variables used throughout the configuration\n  - **outputs.tf**             # Output values such as ALB DNS name, Auto Scaling Group details\n  - **alb.tf**                 # Terraform configuration for provisioning the Application Load Balancer (ALB)\n  - **asg.tf**                 # Terraform configuration for creating the Auto Scaling Group (ASG)\n  - **security.tf**            # Configuration for security groups associated with the ALB and EC2 instances\n  - **ec2_launch_template.tf** # Configuration for EC2 launch template used in the ASG\n  - **terraform.tfvars**       # Define values for the variables (e.g., instance type, desired capacity)\n\n---\n\n## Project 1: Basic Web Application Infrastructure\n\n### Folder Structure:\n\n- **project1-basic-web-infra/**\n  - **main.tf**                # Main configuration file for the infrastructure setup\n  - **variables.tf**           # Define variables for reusable configurations (e.g., VPC CIDR block)\n  - **outputs.tf**             # Output values for your infrastructure such as VPC ID, subnet IDs\n  - **vpc.tf**                 # Configuration for creating the VPC (Virtual Private Cloud)\n  - **subnets.tf**             # Configuration for subnets within the VPC (public/private)\n  - **nat_gateway.tf**         # Configuration for creating a NAT Gateway for outbound internet access\n  - **ec2.tf**                 # Configuration for launching an EC\n\n\n## Week 6: Real-World Projects - Build and Deploy (Days 31–35)\n\n---\n\n### Days 31–35: Project 3 - Deploying a Static Website with S3 and CloudFront\n\n#### 🎯 Goal:\nProvision a **static website** using an **S3 bucket** for hosting, and configure **CloudFront** to distribute the website globally.\n\n---\n\n### 🧠 Concepts Covered:\n- S3 Static Website Hosting\n- CloudFront Distribution\n- S3 Bucket Policies\n- DNS Configuration (Route 53, optional)\n\n---\n\n### 🛠 Hands-On Tasks:\n\n1. **Create an S3 Bucket for Static Website Hosting**\n   - Provision an **S3 bucket** configured for **static website hosting**.\n   - Configure **index.html** and **error.html** as the entry points.\n\n2. **Upload Website Files to S3**\n   - Use Terraform to upload **HTML**, **CSS**, and **JS** files into the S3 bucket.\n\n3. **Configure Bucket Policy for Public Access**\n   - Define a **bucket policy** to allow public access to the static website files.\n\n4. **Provision a CloudFront Distribution**\n   - Set up a **CloudFront distribution** to serve content from the S3 bucket.\n   - Configure the **S3 bucket URL** as the origin of the distribution.\n   - Optionally, configure SSL/TLS for secure access.\n\n5. **DNS Configuration with Route 53 (Optional)**\n   - If using Route 53, create a **DNS record** to map your custom domain to the CloudFront distribution.\n\n---\n\n### ✅ Validation:\n\n- Access the **CloudFront URL** and ensure the static website is being served correctly.\n- Verify that all the files (images, CSS, JS) load properly.\n- If using Route 53, confirm that the custom domain resolves to the CloudFront distribution.\n\n---\n\n### 📦 Suggested File Structure:\n## Project 3: Deploying a Static Website with S3 and CloudFront\n\n### Folder Structure:\n\n- **project3-static-website/**\n  - **main.tf**                # Main configuration file for the infrastructure\n  - **variables.tf**           # Define variables used throughout the configuration\n  - **outputs.tf**             # Output values from the configuration (e.g., S3 bucket URL, CloudFront distribution URL)\n  - **s3.tf**                  # Terraform configuration for provisioning the S3 bucket for static website hosting\n  - **cloudfront.tf**          # Terraform configuration for setting up CloudFront distribution for the static website\n  - **route53.tf (optional)**  # Configuration for DNS management using Route 53 (optional)\n  - **terraform.tfvars**       # Define values for the variables (e.g., domain name, region)\n\n\n## Week 7: Real-World Projects - Build and Deploy (Days 36–40)\n\n---\n\n### Days 36–40: Project 4 - Building a Simple Database Infrastructure (RDS)\n\n#### 🎯 Goal:\nProvision an **Amazon RDS** instance (e.g., **PostgreSQL** or **MySQL**) and configure necessary **security group access** for the database.\n\n---\n\n### 🧠 Concepts Covered:\n- RDS Instance Creation\n- Security Group Configuration\n- Parameter Group for Custom Database Settings\n- IAM Roles for RDS (optional)\n- Database Backups \u0026 Snapshots\n\n---\n\n### 🛠 Hands-On Tasks:\n\n1. **Provision an RDS Instance**\n   - Create an **RDS instance** using Terraform.\n   - Choose a suitable database engine (PostgreSQL or MySQL).\n   - Specify key configurations such as **instance type**, **storage type**, **username**, **password**, and **database name**.\n\n2. **Configure Security Groups for Database Access**\n   - Define a **security group** that allows inbound connections on the appropriate port (e.g., **5432** for PostgreSQL, **3306** for MySQL).\n   - Attach the security group to your RDS instance.\n\n3. **Backup and Snapshot Configuration (Optional)**\n   - Configure automatic **backups** for the RDS instance.\n   - Optionally, create a manual snapshot of the database after provisioning.\n\n4. **Parameter Group Configuration (Optional)**\n   - Create a custom **parameter group** for your RDS instance to adjust default database settings (e.g., max connections, query cache).\n\n5. **IAM Role (Optional)**\n   - If necessary, create an **IAM role** and assign it to your RDS instance for additional features like S3 integration or IAM database authentication.\n\n---\n\n### ✅ Validation:\n\n- Confirm the **RDS instance** is available by connecting to the database using a client like **pgAdmin** (for PostgreSQL) or **MySQL Workbench** (for MySQL).\n- Check that the **security group** allows access from your IP address.\n- Verify **backups** and **snapshots** are working as expected (optional).\n- If IAM role is used, ensure it is functioning correctly.\n\n---\n\n### 📦 Suggested File Structure:\n\n## Project 4: Building a Simple Database Infrastructure (RDS)\n\n### Folder Structure:\n\n- **project4-db-infrastructure/**\n  - **main.tf**                # Main configuration file for the infrastructure\n  - **variables.tf**           # Define variables used throughout the configuration\n  - **outputs.tf**             # Output values from the configuration (e.g., RDS endpoint)\n  - **rds.tf**                 # Terraform configuration for provisioning the RDS instance\n  - **security_groups.tf**     # Terraform configuration for security groups\n  - **backups.tf (optional)**  # Configuration for automated backups and manual snapshots (optional)\n  - **parameter_group.tf (optional)**  # Custom parameter group configuration for the RDS instance (optional)\n  - **iam.tf (optional)**      # IAM role for RDS instance (optional)\n  - **terraform.tfvars**       # Define values for the variables (e.g., RDS credentials, instance type)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faadi-sonwane%2Fterraform40days","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faadi-sonwane%2Fterraform40days","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faadi-sonwane%2Fterraform40days/lists"}