
Master Terraform in ten days, with one-hour daily sessions from beginner to pro, featuring hands-on code and slides on GitHub, across Azure and AWS.
Provision infrastructure with orchestration tools such as Terraform and CloudFormation, and manage software on existing servers with configuration management tools like Ansible and Chef.
Set up the development environment using Visual Studio Code, Terraform CLI, and Azure CLI. Authenticate to Azure, write Terraform configurations, and run Terraform commands to create resources.
Install Visual Studio Code on Windows, then add the official Terraform extension from HashiCorp to prepare for Terraform coding in a local virtual machine.
Install the Terraform CLI for Windows by downloading the official binary, creating a dedicated folder, and adding it to the system path, then verify with terraform version.
Install Azure CLI on Windows using the official Microsoft page and the 64-bit MSI, then verify the installation by checking the version in CMD.
Discover how Terraform providers act as the middleman between your configuration and the target API, enabling resource management across Azure, AWS, and other vendors.
Explore terraform providers on registry.terraform.io, learn official, partner, and community types, copy the provider configuration, and run terraform init to download providers and interact with apis.
Learn how Terraform authenticates with Azure by linking your local machine to a subscription, signing in via a browser, and viewing subscription details to manage resources.
Demonstrates Terraform authentication to create an Azure storage account, using storage.tf and the easy login flow, selecting subscription and tenant, and verifying account details.
Explore Terraform resources as the building blocks of infrastructure, learn to write a resource block with provider, resource type, and a local name, then identify required and optional arguments.
Explore six essential terraform commands—init, format, validate, plan, apply, and destroy—to initialize configurations, format code, validate syntax, preview changes (dry run), apply infrastructure, and selectively destroy resources.
Explore a hands-on Terraform commands demo covering init, format, validate, plan, apply, and destroy in Azure, including providers and demo RG resource groups.
Explains how Terraform providers connect to cloud apis with the Azure RM provider and demonstrates Terraform init and apply, plus semantic versioning for major, minor, and patch updates for backward-compatibility.
Discover how Terraform manages provider versions by default and avoid unexpected changes by pinning with a required_providers block and precise constraints, shown through init and upgrade demos.
Understand Terraform state file as a database that tracks resources, attributes, and metadata; learn local and remote storage options, and how locking prevents concurrent updates.
Explore a practical Terraform state file demo that creates a resource group and storage account in Azure, updates tags, observes state locks, and validates per-project state folders.
Discover how Terraform compares the desired state in your tf file with the current state in Azure, and how plan and apply enforce changes across resource groups.
Explore four Terraform scenarios for Azure resource groups, using plan and apply, manual creation, and tag updates to illustrate desired versus current state alignment.
Learn how to use Terraform output values to expose a public IP address from a created resource, reference attributes, and pass outputs between modules with single or multiple outputs.
Use Terraform variables to replace hard coded values with var blocks. Define defaults and descriptions, reference them as var.name in resources, and centralize updates in variables.tf.
Explore variable assignment methods in Terraform, including defaults, user input at plan time, command line -var flags, terraform.tfvars files, and environment variables using TF_VAR naming.
Learn to capture user input in Terraform by defining variables without defaults, configure Azure resource group with location and name, and use a plan file with -out to save values.
Demonstrates passing variables on the command line with Terraform plan using -var to override defaults; the runtime value takes precedence over the location default in test_plan.
Learn to set Terraform variables through environment variables, with tf var naming, and see how runtime location values are fetched during terraform plan, including updates requiring new tabs.
Learn to manage Terraform variables by defining them in variables.tf and supplying values through terraform.tfvars or environment-specific files (dev, stage, prod) with -var-file during plan and apply.
This lecture explains variable precedence in Terraform, showing how environment variables, tfvars files, auto tfvars files, and -var options determine values, with command-line -var having the highest precedence.
Explore how Terraform data sources fetch existing Azure resources, such as resource groups and subnets, in read-only mode and supply their details to create storage accounts or function apps.
Learn to use a data block in Terraform to fetch an existing resource group and create an Azure storage account. The demo covers data sources, main.tf, and variable configurations.
Explore how a boolean condition selects between two values using the conditional expression syntax condition ? true_value : false_value, with examples for lrs versus grs replication.
Demonstrate how to use a conditional expression in terraform to set storage account replication type to LRS for dev and GRS for prod, using variables.tf and terraform.tfvars.
Declare a number data type variable named RG_name in Terraform, fix a string mismatch, and run init and apply to create a resource group named one, two three.
Demonstrates using a map data type in Terraform to configure a resource group’s name and location via a variable, with defaults and tfvars overrides, plus init, plan, and apply.
Demonstrates using a list data type in Terraform by defining RG_info as a list and retrieving its first two values for the resource group name and location, updated via terraform.tfvars.
Discover how Terraform meta argument in the life cycle block customizes resource behavior, including ignore_changes for tags, and manages create, destroy, and replacement scenarios.
Learn how the create_before_destroy lifecycle meta argument in Terraform makes Terraform create the new resource first, then destroy the old one, changing the default destroy-then-create behavior.
Demonstrates how the prevent_destroy lifecycle argument blocks destroying a resource when true, and how to disable it or use -target to remove other resources.
Explore how Terraform's ignore_changes lifecycle meta-argument prevents manual updates from diverging the desired and current state, with a hands-on Azure resource example.
Learn how to use the Terraform count meta argument to scale Azure public IPs, avoid name collisions with count index, and generate unique names from a names list.
Demonstrates using Terraform's count meta-argument to create multiple Azure public IPs with unique names via count.index, including variable-based naming and plan/apply steps.
Explain the challenges of using the count meta argument in Terraform, including index-based creation of Azure RM public IP resources and when to prefer for_each for varying values.
Learn how to use the foreach loop in Terraform with map data type and a list data type, applying for_each and the two set function to convert lists into sets.
Explore how Terraform built-in functions like lookup, element, and zip map function fetch map values with defaults and retrieve list items, demonstrated in a main.tf example.
Learn how to use the Terraform splat expression to access multiple resources created with count, printing all public IP addresses via a flat expression.
Learn how to create a map from two lists using the zip map function in Terraform, mapping public IP names to addresses and displaying outputs.
Leverage dynamic blocks in Terraform to create five security rules for a network security group, including inbound and outbound configurations.
Explore how the Terraform import command brings existing Azure resources under Terraform management. Compare older import steps with Terraform 1.5's automatic code generation for imported resources.
Explore the old approach to Terraform import: create the storage account manually, write a resource block, then run init and import to build the state.
Explore end-to-end infrastructure deployment with Terraform provisioners, including local-exec, remote-exec, and file provisioners, to install software like nginx and manage configuration after virtual machine creation.
Demonstrates using Terraform's local-exec provisioner in a simple Azure RM Linux VM deployment, showing how to capture the created public IP and save it to a local file.
A remote-exec provisioner demo provisions a Linux VM with Terraform, creates resource group, vnet, subnet, nic, public IP, and uses SSH to update OS, install nginx, and start nginx.
The video demonstrates a file provisioner in Terraform, copying a local script.sh to a newly created Linux VM via a defined connection, source, and destination in main.tf and providers.tf.
Discover how Terraform taint marks a manually changed resource as tainted, forcing delete and recreate on the next apply.
Learn how to taint a Terraform resource, update the state to tainted, and use plan and apply to destroy and recreate the resource, with optional untaint steps.
Understand creation-time and destroy-time provisioners in Terraform, including taint behavior on failure and cleanup steps before deletion, with remote-exec and inline provisioners.
Explore creation-time provisioner behavior in Terraform, showing how a failed provisioning can taint a resource and trigger recreation, and how on_failure = continue avoids taint by skipping errors.
Explore creation-time provisioner behavior in Terraform, how failures taint resources, and how on_failure = continue prevents tainting, illustrated with a nginx typo demo.
Master debugging terraform by enabling tf underscore log at trace, debug, info, warning, or error levels and saving logs to a file with tf underscore log path during terraform init.
Learn how to debug terraform by enabling tf_log levels (trace to error), running init and plan, and routing logs with tf_log_path for the Azure MX provider workflows.
Learn to design reusable Terraform modules with a clear structure and dry principle. Call modules from root configurations using module blocks and source them from local paths, Git, or registries.
Learn to build a Terraform module for Azure RM Windows virtual machine, including main.tf, providers.tf, and variables for vnet, rg name, and vm config, then test deployment.
Clone the linux vm module from the Azure repo into your local machine, configure provider and variables in main.tf, then run terraform init, plan, and apply to provision the vm.
Learn how to manage Terraform remote state with centralized backends, replacing local state file storage with Azure Blob Storage and other options for team collaboration.
Explore remote state management with Terraform using an Azure RM backend. Set up a storage account and tf state container to enable secure, versioned, and collaborative state handling for teams.
Examine Terraform deployment options, covering remote state management with Amazon S3, Azure Storage, or Terraform Cloud, and code management with Bitbucket, GitHub, or Azure Repos.
Create an Azure DevOps organization and Terraform-demo project, install the Terraform extension, and establish an Azure Resource Manager service connection with a service principal granted owner access to the subscription.
Create an Azure repo, add main.tf from the state file demo, configure the linux vm module with runtime values, and enable Azure RM remote state with a storage container.
Explore basic ci/cd for terraform by building an Azure DevOps pipeline that runs terraform init, plan, and apply with remote state in an Azure storage account and Azure Repos.
Demonstrates a two-stage ci/cd pipeline for terraform, separating plan and apply, with environment approvals and a variable group to manage configuration and an artifact-driven apply.
Implement a multi-stage ci/cd pipeline for Terraform by generating a plan in stage one with -out, publishing it as an artifact, and applying it in stage two.
Explore Terraform Cloud and HashiCorp Cloud Platform options, including VCS driven and CLI driven workflows, with GitHub, GitLab, and Bitbucket integrations, remote state, workspaces, plan and apply, and Sentinel governance.
Create a Terraform cloud account, form an organization and a project, then set up a version control workflow workspace connected to GitHub using a folder as the Terraform working directory.
Learn how to authenticate Terraform with Azure using a service principal, grant subscription-level access, and configure ARM client id and secret, tenant id, and subscription id.
Demonstrate a VCS-driven Terraform workflow by running plan and apply from a dedicated workspace, with the state file stored in the workspace via Terraform Cloud, provisioning Azure resources.
Explore implementing a cli-driven workflow with terraform cloud by creating a dedicated workspace, authenticating, and running remote plan and apply with state stored in the workspace.
Explore Terraform sentinel, a policy as code framework from HashiCorp enterprise products that enforces fine-grained policy decisions during Terraform plan, including tags enforcement for resources via policy sets.
Demonstrates creating a sentinel policy for Terraform Cloud that requires all resources to have tags, attaching it to a policy set, and enforcing it during plan and apply.
Terraform Certified Associate Course Overview
The Terraform Certified Associate certification is designed to validate a professional's expertise in leveraging Terraform for automating, managing, and provisioning infrastructure in AWS and Azure environments. Terraform, an Infrastructure as Code (IaC) tool, plays a pivotal role in modern IT operations by enabling consistent and repeatable management of cloud resources through declarative configuration files. This certification focuses on foundational knowledge and hands-on skills, ensuring candidates are well-versed in essential Terraform concepts, workflows, and best practices.
The course prepares individuals to understand and implement Terraform's lifecycle, which includes initialization, planning, application, and destruction of infrastructure. Candidates will also gain insights into using version control systems to track changes, troubleshoot configuration errors, and optimize infrastructure performance. A significant emphasis is placed on working across multi-cloud environments, enabling professionals to integrate AWS and Azure resources seamlessly, ensuring scalability, reliability, and security.
This certification is ideal for DevOps engineers, cloud architects, and system administrators who are looking to enhance their proficiency in automating cloud infrastructure. By acquiring this credential, professionals demonstrate their ability to design and implement scalable, cost-effective, and secure infrastructure, making them invaluable assets in organizations adopting DevOps and cloud strategies. To help for Terraform certification
This certification is ideal for DevOps engineers, cloud architects, and system administrators who are looking to enhance their proficiency in automating cloud infrastructure. By acquiring this credential, professionals demonstrate their ability to design and implement scalable, cost-effective, and secure infrastructure, making them invaluable assets in organizations adopting DevOps and cloud strategies. To help for Terraform certification