
Learn Terraform basics to advanced, with hands-on focus on the Terraform cli, Terraform cloud, and ci/cd implementation for AWS infrastructure management within the infrastructure as code framework.
Explore why cloud providers and infrastructure as code matter, discover Terraform's workflow, blocks, variables, state, modules, providers, and CI/CD automation with GitHub Actions for AWS.
Explore the four methods to manage AWS resources: management console, CLI, CDK, and API calls. Learn how CloudFormation automates bulk resource creation with YAML or JSON templates to form stacks.
Install Terraform on Windows by downloading the binary zip, unzipping it, and placing the application in a binary path; then update the path to run Terraform --version.
Learn how to install Terraform CLI on Linux using the apt package manager, including adding the HashiCorp repo, updating, installing, and verifying version 1.8.4 on Ubuntu.
Install and configure VS Code on Windows to write Terraform configs, highlighting syntax and catching errors with extensions such as HCL, YAML, Docker, and Kubernetes for AWS infrastructure management.
Install and configure the AWS CLI on Windows, verify the installation, and set up IAM user credentials (access key and secret key) with an attached policy for Terraform authentication.
Install the AWS CLI version 2 on Linux by following the official guide: download with curl, unzip, run the install script, and verify the version.
Install the HashiCorp ACL extension for accurate ACL syntax and auto-completion, and add remote SSH to connect from Windows to Linux, enabling Terraform development in VS Code.
Create an IAM user for Terraform, generate and store access key and secret key, and configure credentials for Terraform CLI in us-east-1, noting that without a policy, actions are denied.
Configure a Terraform user’s AWS credentials and grant access by attaching AWS or customer managed policies, or inline policies, with group inheritance for fine-grained S3 permissions and least privilege.
Explore the Terraform apply workflow across create, update, and destroy scenarios, detailing CLI steps (init, fmt, validate, plan, apply), configuration files, HCL language, and CI/CD automation with AWS.
Learn how to clean up resources managed by Terraform with destroy, using plan -destroy and destroy commands, in manual or CI/CD workflows.
Identify the target provider and project scope, assign the author to write your Terraform configs, then initialize, plan, and apply changes, with destroy for cleanup when needed.
Initialize the working directory with terraform init to load .tf files, download the provider plugin from registry, and create the dot terraform directory while configuring required provider.
Master Terraform workflow commands for AWS infrastructure management, including init, fmt, validate, plan, apply, and destroy to create or clean up resources.
Learn how to set up and run Terraform init in a VSCode workflow, configure the AWS provider, manage Terraform files, and handle provider plugins and version upgrades.
Install the HashiCorp Terraform extension for VSCode, reopen the editor to reload, and verify syntax highlighting as the extension becomes active.
Learn how to use terraform fmt to format Terraform configuration files in the current directory, with canonical styling for HashiCorp configuration language, and the -recursive option for subdirectories.
Demonstrates how to use terraform fmt to format Terraform configuration files in the current directory and shows an EC2 example with ami, instance type, key pair, and tags.
Explore how terraform validate checks all .tf files in your directory for syntax and missing required arguments, before running plan, and reports errors with helpful hints.
Demonstrates how terraform validate checks Terraform configuration syntax and required attributes, reveals errors such as missing or unsupported arguments, and guides fixes to ensure validity.
Learn how the Terraform plan operation previews resource changes before applying or destroying, including destroy and refresh-only modes and symbols for create, destroy, recreate, and update in place.
Learn how to run terraform plan to preview changes and see what will be created, such as an EC2 instance. Save plan with -out and inspect it with terraform show.
Learn how Terraform apply creates or updates resources by executing the plan, prompts for approval, and uses a saved plan with -out or -auto-approve for CI/CD workflows.
Terraform apply generates a plan, prompts for approval, and creates or updates an EC2 instance via the Terraform state file, with plan files and optional auto-approve.
Learn how to safely destroy ephemeral infrastructure with Terraform destroy, generate a destroy plan with Terraform plan -destroy, and use -destroy with apply for CI/CD, while avoiding production deletion.
Learn how Terraform destroy works with a state file, plan -destroy, and auto-approve to safely remove an AWS EC2 resource managed by Terraform.
Explore Terraform blocks, including settings, provider, resource, variable, local, output, data source, module, and nested blocks, and learn to configure AWS credentials and state locking.
Discover how the Terraform settings block defines provider information and remote state storage, sets Terraform behavior, and uses required_version and required_providers, with optional experiments.
Explore the Terraform settings block to declare a required AWS provider and plugin source from the registry, and learn how versioning and terraform init manage providers.
Demonstrate how to enforce a required Terraform version and version constraints, using equal or greater-than logic to ensure configurations run only on compatible versions across production, dev, and QA environments.
Explore how to configure a provider block in terraform to set region, manage credentials, and select aws profiles, then run plan to validate authentication.
Learn to define terraform resource blocks for aws provider, creating resources like aws_instance or aws_vpc by specifying resource type, name, and arguments, plus meta-arguments to control creation, updates, and destruction.
Demonstrates using a terraform aws underscore instance resource block to spin up an ec2 instance, detailing resource type and name, ami, instance type, and optional tags with plan and apply.
Learn to create multiple AWS resources with unique resource block names in Terraform, validate, plan, and apply to spin up two EC2 instances with different AMI and development environment tags.
Explore terraform input variables, local values, and output values to pass data to resources, set common tags, and print details like ip addresses and dns after creation.
Learn how Terraform input variables centralize values, enable reusability across modules, and define defaults, types, descriptions, validations, and sensitive or nullable options, with cli, variable files, and environment variables.
Define and use variables in a Terraform variables.tf file to avoid hard-coded values in resource blocks. Learn variable blocks, descriptions, types, defaults, and referencing with var.
Learn how missing a variable's default value in Terraform prompts for input during plan and apply, and how enabling the default prevents variable prompts.
Demonstrates overriding a Terraform variable from the CLI to replace its default value during plan, apply, or destroy, using an example of instance size to t2.large.
Learn to define Terraform environment variables with the tf_var prefix and see how cli values override environment variables and defaults in a plan.
Explore configuring Terraform variables with tfvars files to manage environment-specific values, showing how to define variables, use production and development tfvars, and pass values via the CLI or environment.
Learn how auto.tfvars files supply environment-specific variables in Terraform, explore precedence with CLI options and terraform.tfvars, and manage production and development configurations in modules.
Identify the precedence of terraform input variables, with command line interface settings at the top, followed by tfvars, auto tfvars, environment variables, prompts, and default values.
Explore Terraform local values to share common tags and environment information across production resources; use input variables for unique names.
Explore using Terraform locals to define common tags, merge them with input variables, and apply them to an EC2 instance, with a plan showing environment and type tags.
Explore how to use inheritance with Terraform local values to compose and apply tags to an EC2 instance in AWS cloud by merging local values with variables in a map.
Explore how Terraform output values print resource attributes, like public IP addresses and subnet IDs, after deployment, using output blocks, attributes, and optional conditional checks for validation.
Learn to print EC2 public and private IP addresses using Terraform output blocks. Pull attributes from an aws_instance during plan and apply.
Discover how Terraform data source blocks enable you to pull existing resources, such as VPC subnets, without managing them, using most recent, filter, lifecycle, and provider arguments.
Explain the data source block syntax using aws_ami with filters to fetch the latest ubuntu 24.04 image ID, avoiding hard-coded values, and use it in an aws_instance.
Explore Terraform meta arguments such as depends_on, count, for_each, provider, and lifecycle, and learn how they control resource creation, updates, and destruction with practical examples.
Demonstrates using the Terraform outputs block with the count meta-argument to manage multiple resources, print public and private IPs, and control sensitive outputs through apply and the state file.
Demonstrate the for each meta argument in Terraform, comparing it with count to manage resources. Learn to launch instances across subnets using subnet lists and length to drive scaling.
Demonstrates replacing count with for_each using a set of strings from the subnet list, creating three instances across subnets, and the best practice of using for_each for unique values.
Explores using the for_each meta-argument to print public and private IP addresses of multiple AWS EC2 Ubuntu instances, detailing a loop-style approach beyond count and handling for_each with outputs.
Demonstrates using the for_each meta-argument and the values function in Terraform to output public and private IP addresses for multiple AWS instance resources, presenting two solution approaches.
Learn how depends_on enforces creation order in Terraform by declaring dependencies between resources like VPC, EC2, EKS, and EFS, using nested blocks inside resource or module blocks.
Explore how depends_on in Terraform enables launching an EC2 instance with an IAM role and access to S3, covering plan, validate, and apply while troubleshooting policy errors.
Explore how to enforce creation order in Terraform using depends_on to create a profile, a role, and a customer inline policy before launching an instance. Follow the validate-plan-apply workflow.
Discover how to use the Terraform lifecycle meta-argument to control resource behavior, covering create before destroy, ignore changes, prevent destroy, and replace triggered by, within a lifecycle block.
See how Terraform handles default behavior when updating an EC2 instance, and learn to enable create_before_destroy in a lifecycle block to create a new instance before destroying the old one.
Explore the Terraform lifecycle ignore changes setting on an EC2 instance, showing how changes to specified attributes are ignored after creation, with create before destroy and one or more arguments.
Learn how to use Terraform to manage AWS infrastructure with a focus on the prevent_destroy lifecycle, protecting security groups during instance destruction.
Explore how the replace triggered by meta argument in Terraform triggers service replacement when a launch template changes.
Learn to build a VPC with public and private subnets, Internet gateway, and NAT gateway, and associated route tables in AWS, first via the console and then automated with Terraform.
Learn to create a Terraform AWS VPC network, including subnets, route tables, internet gateway, and NAT gateway, using VPC CIDR variables, tags, and local values with plan and validation.
Demonstrates building an AWS VPC with public and private subnets using Terraform, employing variables, count, and element to allocate subnets across availability zones.
Demonstrates using an aws_availability_zone data source to list AZs in us-east-2 and create public and private subnets across those zones within a vpc, enabling map_public_ip_on_launch for public subnets.
Create an AWS internet gateway attached to a VPC with Terraform, using tags from a variable; format, validate, and plan to preview the IGW as groundwork for route tables.
Learn to create and attach public and private route tables in AWS using Terraform, including VPC associations, tags, and reusable tag blocks in route_table.tf.
Demonstrate associating public subnets to the public route table and private subnets to the private route table using Terraform aws_route_table_association, with count-based subnet attachment and plan steps.
Launch a public nat gateway with an elastic ip to enable internet access from private subnets, wiring it into the public route table using terraform resources.
Learn how to run Terraform apply to provision a VPC with public and private subnets, a NAT gateway, and routing configured, including plan prompts and dependency behavior.
Manage Infrastructure for Organizations through Automation is a key aspect as part of DevOps Culture. But in today emerging Application development, we can't find a solutions on a single Cloud Provider like AWS, Microsoft Azure, GCP, etc.,.
So we need a common tool that can manage Infrastructure across these multiple targets, for which we have Terraform as a solution for 99.99% Organizations.
In this training program, we have started from fundamentals to understand the working principal for Terraform core features for Freshers and IT professionals who are looking at these kind to solutions in their Organization or enhance skills as per IT requirements.
After understanding the fundamentals, next to understand the workflow and written Terraform code by using HCL(Hashicorp Configuration Language) which is a Declarative approach which make easy to understand for new to this tool as well.
Finally, logical implementation plays a key role for Terraform when we need to achieve for the target provider, in which this course will help you to stand with.
We have added different scenarios with examples for AWS as Target provider to understand basics to advanced level of Implementation. Some topics we have explained from scratch which might be boring for few of them, but you guys can always skip those, if you already have an idea.
Topics covered: Some topics have been uploaded and other will be coming soon...
What is IaC?
Why terraform?
Different types of Terraform approaches
Hashicorp Terraform
HCP Terraform
Terraform Enterprise
Terraform Setup and Configuration
Terraform Workflow
Terraform Blocks Overview
Terraform Settings
Provider
Resource
Input variable
Local value
Output value
data source
backend
life-cycle
null_resource
provisioner
dynamic
Terraform Meta-arguments
Terraform Functions
Terraform Workspace
Terraform Modules
HCP terraform
Terraform Enterprise
Terraform Policy
Sentinel
OPA