
Gain Terraform fundamentals on Azure and begin a real-world journey through four-tier networks, vmss, bastion, load balancers, dns zones, traffic manager, application gateway, and IaC DevOps.
Learn about the prerequisite note for the Terraform fundamentals section, covering command basics, language basics, settings block, providers block, dependency lock file, resource syntax and behavior, and state files.
Install Terraform CLI, Azure CLI, and VS Code with the Terraform plugin and Git on macOS, then download, unzip, and install the binary via manual or Homebrew.
Install visual studio code and the hashicorp terraform plugin, then configure and explore the course repository with manifests and configuration files in vscode, practicing commands like terraform init.
Install the Terraform CLI on linux by downloading the appropriate binary for ubuntu, debian, centos, rhel, fedora, or amazon linux and add it to your path.
Learn the Terraform command workflow with initialize, validate, plan, apply, and destroy to provision and manage cloud resources, including the purpose and lifecycle of each command.
Review Terraform manifests and the core Terraform workflow, focusing on the Azure azurerm provider, resource group creation in East US, and the Terraform settings and provider blocks.
Learn to run core terraform commands: init, validate, plan, apply, and destroy, while configuring the azure provider, managing state with terraform.tfstate, and performing az login for azure authentication.
Explore Terraform language basics, writing .tf and .tf.json files, and using top-level blocks such as resources and variables, with clear arguments, labels, and comments in a working directory context.
Explore Terraform language syntax, focusing on arguments, attributes, and meta-arguments, with azure resource guidance, including azurerm_resource_group, timeouts, import, and top-level blocks.
Master eight Terraform top-level blocks across three variants—fundamental blocks, variable blocks, and calling or referencing blocks—by exploring Terraform settings, provider, resource, input variables, output values, locals, data sources, and modules.
Explore how the Terraform settings block locks the CLI version, provider requirements, and backend, then use the provider and resource blocks to define Azure resources.
Lock the Terraform CLI with the required_version in the Terraform block and learn version constraints like >= 1.0.0, tilde greater than, and the pessimistic constraint operator.
Learn how terraform providers enable azure resource management, including provider blocks, provider requirements, and provider configuration, with init, plan, apply, and destroy, plus the .terraform.lock.hcl for version locking.
Learn to define provider requirements in Terraform with required_providers and configure the azurerm provider. Explore the features block for Azure deployments.
Create a resource group using azurerm_resource_group, run terraform init, validate, plan, and apply with -auto-approve; then destroy with -auto-approve and clean up state files.
Explore Terraform multiple providers, creating region-specific configurations with East US and West US providers, using aliases to assign resources per region and control behavior.
Configure multiple azurerm providers with aliases, including provider2-westus, to deploy two resource groups in East US and West US, using provider meta-arguments, and run init, validate, plan, and apply.
Explore how the dependency lock file protects upgrades from 1.44.0 to 2.64.0 for the azure provider, and create myrg1 and a random_string with the random provider.
Learn to create an Azure storage account resource in Terraform using azurerm with provider 1.44.0, dynamic naming from random_string, and cross-resource references to resource group and location.
Use a Terraform dependency lock file (.terraform.lock.hcl) to pin providers, then init, plan, apply, and upgrade while preserving 1.44 versions and avoiding automatic upgrades.
Explore Terraform resource syntax, including resource type and local name, and learn how arguments, attributes, and meta arguments shape resource behavior in Azure deployments.
Learn to create an azure subnet, public IP, and network interface with Terraform, linking subnet id and public IP id to the network interface within a virtual network.
Explore the four Terraform resource behaviors—create, destroy, update in place, and destroy-and-recreate—illustrated with Azure cloud constraints. Learn how these behaviors affect the terraform state and the apply process.
Demonstrate a create resource workflow in Terraform: init, validate, plan, and apply to provision a resource group, virtual network, subnet, public IP, and network interface.
Explore how Terraform state tracks real world Azure resources and their configuration bindings. Learn when the state file is created, what it stores, and why remote backends matter.
Explore Terraform resource behavior, focusing on update in place and destroy-recreate workflows demonstrated on a virtual network with environment dev tag changes.
Implement Terraform settings and provider blocks for Azure in the first real-world demo. Configure Terraform CLI version, required providers versions, and backend, while defining the Azure RM and random providers.
Define and use terraform local values to name expressions once, reference them across resources, and centrally manage common_tags and a resource_name_prefix for many resources.
Use the Terraform random provider to generate a unique random_string for Azure resource naming and create a resource group with a prefix-based name.
Create a web tier subnet and a matching network security group, define inbound and outbound rules (inline or via separate NSG rule resources), and associate the NSG to the subnet.
Learn to create azurerm_network_security_rule inbound rules for a web subnet NSG using Terraform for_each with a ports map, handling port 80, 443, and 22, and manage creation order with depends_on.
Define vnet output values in Terraform to print the virtual network name and ID, plus subnet and NSG outputs, across root and child modules, with remote state data sources.
Define and override Terraform input variables with terraform.tfvars to set environment, resource_group_name, resource_group_location, and vnet and subnet values for your Terraform deployment.
Execute Terraform on Azure to build a four-tier VNet with app, web, db, and bastion subnets, create and verify NSGs and rules, then destroy resources with auto-approve.
Provision an Azure Linux virtual machine with Terraform, creating public IP, network interface, and security group, and bootstrap an Apache web server in a four-tier network.
Generate rsa 4096 ssh keys for an azure linux vm, secure private key with proper permissions, and configure a static standard public IP in Terraform for the VM.
Create a Linux VM network interface with azurerm_network_interface, configure ip_configuration with a subnet reference and dynamic private IP, link to a public IP, and consider a network security group.
Review the vm nic network security group setup by associating a network security group with the virtual machine nic, mirroring the subnet nsg pattern used earlier.
Create an Azure Linux virtual machine resource with Terraform, configuring name, location, and network interfaces. Pass the ssh key via file function and custom_data for the sample app.
Provision a Linux virtual machine on Azure with base64-encoded custom data using Terraform. Use a locals block to embed the bootstrap script and apply filebase64 and base64encode for secure data.
Review terraform outputs for Azure Linux VM resources, including public IP, private IP addresses, network interface, and VM ID, and learn to reference attributes and variablize values for production.
Explore executing terraform init, validate, plan, and apply on Azure resources, review outputs like public_ip_address, and verify vm, network interface, and NSG configurations in the Azure portal.
Connect to the vm via ssh using the pem file, verify cloud-init-output.log shows httpd provisioning, and confirm the web server serves app1 html files on port 80.
Verify web server activity by tailing /var/log/httpd/access_log and error_log on the VM, then comment the NIC-NSG block and destroy five resources (ports 22, 80, 443, NSG, NIC association) via terraform.
******* Course Overview *******
Welcome to this Amazing course on Terraform on Azure with IaC DevOps SRE | Real-World 25 Demos. Below is the list of modules covered in this course.
Course Modules
01. Infrastructure as Code (IaC)
02. Install Tools on MacOs, LinuxOS and WindowsOS
03. Command Basics
04. Language Syntax
05. Settings Block
06. Providers Block
07. Multiple Providers usage
08. Dependency Lock File Importance
09. Resources Syntax and Behavior
10. Azure Virtual Network, Subnets and Network Security Groups
11. Azure Linux Virtual Machine, Network Interfaces and Public IP
12. Azure Bastion Host Linux VM and Azure Bastion Service
13. Azure Standard Load Balancer using Portal
14. Azure Standard Load Balancer Basics
15. Azure Standard Load Balancer - Inbound NAT Rules
16. Terraform Meta-Argument Count with Azure LB and VMs
17. Terraform Meta-Argument for_each with Azure LB and VMs
18. Azure Virtual Machine Scale Sets Basics - Manual Scaling
19. Azure Virtual Machine Scale Sets Basics - Auto Scaling 4 Profiles
20. Azure Internet LB + Web VMSS + Internal LB + App VMSS
21. Azure Private DNS Zones
22. Delegate DNS Domain to Azure DNS
23. Azure Public DNS Zones
24. Terraform Remote State Storage using Azure Storage Account
25. Azure Traffic Manager and Terraform Remote State Datasource
26. Azure Application Gateway using Azure Portal
27. Azure Application Gateway using Terraform
28. Azure Application Gateway Context Path Routing using Terraform
29. Azure Application Gateway Multisite Hosting using Terraform
30. Azure Application Gateway SSL + HTTP to HTTPS Redirect + AG Error Pages
31. Azure Application Gateway SSL from Azure Key Vault using Terraform
32. Azure DevOps for Terraform Projects - IaC (Infrastructure as Code) DevOps
33. Azure MySQL Single Server with Terraform
34. Terraform Modules - Use Public Registry Module
35. Terraform Azure Static Website
36. Terraform Modules - Build Local Terraform Module
37. Terraform Modules - Publish to Terraform Public Registry
38. Terraform Module Sources
Azure Services
01. Resource Group
02. Virtual Network
03. Subnets
04. Network Security Groups
05. Virtual Machines
06. Network Interfaces
07. Public IPs
08. Load Balancer - Internet and Internal
09. Traffic Manager
11. Virtual Machine Scale Sets
12. Autoscaling
13. Private DNS Zones
14. Public DNS Zones
15. Application Gateway
16. Storage Accounts
17. Azure DevOps - Build Pipelines
18. Azure DevOps - Release Pipelines
19. Azure MySQL Single Server
20. Azure NAT Gateway
Terraform Concepts covered
01. Settings Block
02. Providers Block
03. Multiple Providers usage
04. Dependency Lock File Importance
05. Resources Syntax and Behavior
06. Resources Meta-Argument - depends_on
07. Resources Meta-Argument - count
08. Resources Meta-Argument - for_each
09. Resources Meta-Argument - lifecycle
10. Input Variables - Basics
11. Input Variables - Assign When Prompted
12. Input Variables - Assign with terraform.tfvars
13. Input Variables - Assign with tfvars var-file argument
14. Input Variables - Assign with auto tfvars
15. Input Variables - Lists
16. Input Variables - Maps
17. Input Variables - Sensitive Input Variables
18. File Function
19. Output Values
20. Local Values
21. Datasources
22. Backends - Remote State Storage
23. File Provisioner
24. remote-exec Provisioner
25. Null Resource
26. Modules from Public Registry
27. Build Local Module
28. Dynamic Blocks
29. base64encode function
30. filebase64 function
31. element function
32. lookup function
33. Remote State Datasource
Each of my courses comes with
Amazing Hands-on Step By Step Learning Experiences
Real Implementation Experience
Friendly Support in the Q&A section
30-Day "No Questions Asked" Money Back Guarantee!