
Master Terraform from basics to advanced concepts, including conditions, loops, data sources, templates, functions, and variables. Deploy Terraform scripts via Jenkins pipelines and integrate Ansible playbooks for end-to-end automation.
Terraform automates infrastructure provisioning with infrastructure as code, enabling automated, reusable dev, test, and prod environments across AWS, Azure, Google Cloud, DigitalOcean, and open source.
Install terraform on mac by downloading the binary, extracting it, and moving the script to /usr/local/bin to ensure it’s on the system path.
Create an AWS IAM user with programmatic and administrator access, configure its access key id and secret key on your laptop, set Mumbai region, and use JSON output for Terraform.
Choose Atom as the editor for TerraForm code, install Atom on MacBook, and create a TerraForm workspace with the necessary packages, including TerraForm Fmt, with format on save.
Initialize a Terraform project by creating a providers.tf file with an AWS provider block, set the region to Mumbai, and run Terraform init to download AWS provider plugins.
Learn to create AWS resources with Terraform by provisioning a VPC, configuring CIDR block, tenancy, and tags, using resource blocks and Terraform apply to deploy and update resources.
Master Terraform outputs and interpolations to fetch the VPC CIDR block after apply, using the interpolation syntax: resource type dot attribute, and print the result to the console.
Learn how Terraform stores resources in a local json state file in your project workspace, including VPCs and tags; use plan and apply to detect changes and avoid tampering.
Explore configuring Terraform to use an S3 remote state backend to enable multi-user collaboration, including bucket setup in Mumbai, init, state migration, and practices like versioning and encryption.
Configure S3 backend for state files and enable locking to prevent concurrent writes. Create a DynamoDB table named Javahome-tf with a primary key lock ID for state locking and consistency.
We demonstrate how S3 backend locking works behind the scenes by showing terraform init and apply with DynamoDB entries that track who holds the lock on the state file.
Declare and reference Terraform variables to improve maintainability and environment-specific configurations. Pass values at runtime with -var and tfvars files, use defaults, and leverage variable types for dynamic infrastructure.
Use Terraform workspaces to run dev and prod from the same configuration with separate state files in S3. Dynamically reference the current workspace to set environment-specific values.
Terraform supports loops via the count attribute to create multiple resources, such as ten EC2 instances or ten VPCs. Explore real-time scenarios in upcoming videos.
Learn to conditionally create a VPC in Terraform using count and a ternary operator, based on dev or prod workspace, so zero or one resource is deployed.
Master Terraform local variables by declaring reusable expressions in a locals block, improving readability and maintainability across resources, with dev versus prod logic and a separate locals file.
Learn how to bring manually created resources under Terraform control using the Terraform import command, map the VPC ID to your code, and generate or update the state file.
Terraform 1.5.0 introduces the import block to manage existing AWS resources in CI/CD pipelines, enabling VPC import, state mapping, and automated apply via Jenkins.
Create a VPC in AWS with Terraform by configuring the provider and S3 backend, defining the VPC CIDR block, region, tenancy, tags, and an environment key from the current workspace.
Learn how to dynamically generate CIDR blocks for multiple subnets in Terraform using the cidrsubnet function, count and index, and data sources for availability zones.
Create public subnets for high availability across multiple availability zones in terraform, configure internet gateways and route tables, and parameterize the cidr block with dynamic availability zones via data sources.
Learn to use Terraform data sources to fetch AWS availability zones, and dynamically create six public subnets with cidrsubnet, count, and local variables in a VPC.
Create a public subnet by provisioning an internet gateway with Terraform, tagging resources, and creating a route table to associate it with the public subnet and internet gateway.
Create a separate public route table for subnet associations in Terraform, configure an internet gateway, name the public route table, and associate it with the relevant subnets.
Associate public subnets with a route table by looping over all public subnet IDs and applying the same route table ID, then verify the internet gateway connection in AWS.
Create two private subnets by placing code in a separate file, adjust cidr blocks and availability zones, and use the slice function to derive a two-subnet list for RDS multi-az.
Explore Terraform subnet settings to automatically map public IPs on launch for public subnets, including boolean value syntax and enabling the map public IP on launch option.
Configure internet access for private subnets by deploying nat instances in a public subnet with Terraform, and route 0.0.0.0/0 through the nat to private subnets.
Configure a nat security group to control outbound traffic for private subnets, open to the internet with all ports and all protocols, then attach the group to the nat instance.
Launch EC2 instances in a public subnet using Terraform, with parameterized instance types and AMIs, install Apache via user data, and deploy a sample website with web tags.
Launch EC2 instances in a public subnet and deploy a web server via a user data script, including Apache setup and index.html, and understand Terraform's reaction to user data updates.
Create an s3 bucket with terraform by defining an s3 bucket resource and using variables for name and region. Execute terraform commands to provision the bucket in the target environment.
Create and attach an IAM role to EC2 instances using a Terraform template, granting S3 put object access via a dynamically rendered policy and an instance profile.
Create a web security group for EC2 in the public subnet, enable ingress and egress, open 80 and 22 TCP from 0.0.0.0/0, and attach to EC2 instances.
Deploy an elastic load balancer in front of two EC2 web servers using Terraform, configure VPC subnets and security groups, and expose port 80.
Create and manage an EC2 key pair with Terraform, generating a public key with ssh-keygen and embedding the key name in the web EC2 instance for secure SSH access.
Configure an autoscaling group with a launch configuration, health checks via a load balancer, and CPU-based scaling policies, using Terraform scripts and proper security group egress rules.
Configure a public Route 53 hosted zone to point to an elastic load balancer using Terraform, creating alias A records to route domain traffic to the ELB.
Configure a Terraform-based RDS instance with MySQL, handling backend setup, using variables instead of hardcoding sensitive data, pass passwords at runtime, and suffix configurations with the current Terraform workspace.
Configure a DB Subnet Group in Terraform for an RDS instance, aggregating private subnets and forcing the DB to launch only within those subnets.
Configure an RDS security group with TCP ingress on port 3302, allowing traffic from web application security groups or CIDR blocks, keep egress open, noting MySQL default port is 3306.
Enable automated daily backups with a 1:00 to 1:30 backup window, assign security group IDs to security groups (not CIDR blocks), and disable auto minor version upgrades, which occur weekly.
Enable RDS storage auto scaling beyond the initial 20 gb as utilization increases. Execute provisioning, monitor the dashboard, and verify that the database, subnet groups, and security groups are created.
Learn to use an application load balancer to route traffic to target groups of EC2 instances via listeners by port or path, and to create and attach target groups.
Learn how to attach EC2 instances to an ALB target group using Terraform, handling single versus multiple resources with count and count.index, and repeat for additional target groups.
Configure an AWS ALB by setting up a listener that routes port 80 traffic to a target group, using the security group and public subnet IDs within the Terraform workspace.
Attach an application load balancer listener on port 80 with http, no ssl, and forward to the web target group. Verify by hitting the load balancer.
Configure application load balancer access logs by creating an s3 bucket and policy to permit the alb to publish logs, using variable-driven names and hyphen logs for regional deployments.
Configure an ALB to deliver access logs to an S3 bucket by setting a bucket policy, using Terraform templates to dynamically interpolate the bucket name at runtime.
Enable ALB access logs by configuring the S3 bucket, policy, and log prefix, apply Terraform to provision resources, resolve bucket name conflicts, and verify that logs are generated.
Deploy lambda functions with Terraform by creating an IAM role and policy for CloudWatch Logs, packaging code into a zip, and applying changes to redeploy when source code hashes change.
Learn to build reusable Terraform modules, organize code with module folders, define inputs and outputs, and reuse modules across dev and prod environments for VPCs, subnets, and EC2 instances.
Learn and understand fundamental terraform language construct
Managing multiple environments using terraform workspaces
Learn how to deploy lambda functions using terraform.
Automating infrastructure provisioning using terraform and AWS fundamental to advanced, Configuring networking (Route tables, Internet gateways, public subnets, private subnets)
Write Jenkins pipeline code to automate deployments of terraform.
Use Ansible terraform modules to apply terraform changes
Terraform, resources, loops, functions, variables, outputs, and modules
Terraform, deploy lambda functions, Manage remote state files using S3, Understand terraform fundamental concepts, Create ELB, ALB, and auto-scaling, Set up Route53
Build reusable modules with terraform
Managing manually created resources using terraform import
Learning for_each meta-argument
Manage state files in S3 and enable state lock to prevent concurrent modifications.
Conditionally creating resources
Usage examples for local variables
Using dynamic blocks and making code more dynamic
Provision load balancers are like application load balancers.
working with tfvars and passing inputs dynamically at runtime
Implementing data sources to access data that is present outside of terraform
how to manage and secure sensitive variable
Creating IAM policies & roles and attaching them to EC2
Using terraform splat expressiong
Using terraform for loops
Creating EC2 instance and working with Userdata scripts
Create VPC, Subnets and configure route tables
Creating security groups and managing inbound and outbound rules
Creating and deploying NAT instances and NAT gateways
What is a null resource in terraform
How to prevent RDS deletion using resource lifecycle