Terraform Settings, Providers & Resource Blocks¶
Step-01: Introduction¶
- Terraform Settings
- Terraform Providers
- Terraform Resources
- Terraform File Function
- Create EC2 Instance using Terraform and provision a webserver with userdata.
Step-02: In c1-versions.tf - Create Terraform Settings Block¶
- Understand about Terraform Settings Block and create it
Step-03: In c1-versions.tf - Create Terraform Providers Block¶
- Understand about Terraform Providers
- Configure AWS Credentials in the AWS CLI if not configured
- Create AWS Providers Block
Step-04: In c2-ec2instance.tf - Create Resource Block¶
- Understand about Resources
- Create EC2 Instance Resource
- Understand about File Function
- Understand about Resources - Argument Reference
- Understand about Resources - Attribute Reference
Step-05: Review file app1-install.sh¶
#! /bin/bash
# Instance Identity Metadata Reference - https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-identity-documents.html
sudo yum update -y
sudo yum install -y httpd
sudo systemctl enable httpd
sudo service httpd start
sudo echo '<h1>Welcome to StackSimplify - APP-1</h1>' | sudo tee /var/www/html/index.html
sudo mkdir /var/www/html/app1
sudo echo '<!DOCTYPE html> <html> <body style="background-color:rgb(250, 210, 210);"> <h1>Welcome to Stack Simplify - APP-1</h1> <p>Terraform Demo</p> <p>Application Version: V1</p> </body></html>' | sudo tee /var/www/html/app1/index.html
sudo curl http://169.254.169.254/latest/dynamic/instance-identity/document -o /var/www/html/app1/metadata.html
Step-06: Execute Terraform Commands¶
# Terraform Initialize
terraform init
Observation:
1) Initialized Local Backend
2) Downloaded the provider plugins (initialized plugins)
3) Review the folder structure ".terraform folder"
# Terraform Validate
terraform validate
Observation:
1) If any changes to files, those will come as printed in stdout (those file names will be printed in CLI)
# Terraform Plan
terraform plan
Observation:
1) No changes - Just prints the execution plan
# Terraform Apply
terraform apply
[or]
terraform apply -auto-approve
Observations:
1) Create resources on cloud
2) Created terraform.tfstate file when you run the terraform apply command
Step-07: Access Application¶
- Important Note: verify if default VPC security group has a rule to allow port 80
Step-08: Terraform State - Basics¶
- Understand about Terraform State
- Terraform State file
terraform.tfstate - Understand about
Desired StateandCurrent State
Step-09: Clean-Up¶
# Terraform Destroy
terraform plan -destroy # You can view destroy plan using this command
terraform destroy
# Clean-Up Files
rm -rf .terraform*
rm -rf terraform.tfstate*
Step-10: Additional Observations - Concepts we will learn in next section¶
- EC2 Instance created we didn't associate a EC2 Key pair to login to EC2 Instance
- Terraform Resource Argument -
Key Name - AMI Name is static - How to make it Dynamic ?
- Use
Terraform Datasourcesconcept - We didn't create multiple instances of same EC2 Instance
- Resource Meta-Argument:
count - We didn't add any variables for parameterizations
- Terraform
Input VariableBasics - We didn't extract any information on terminal about instance information
- Terraform
Outputs - Create second resource only after first resource is created
- Defining Explicit Dependency in Terraform using Resource Meta-Argument
depends_on - WE ARE GOING TO LEARN ALL THE ABOVE CONCEPTS IN NEXT SECTION
🎉 New Course
Ultimate DevOps Real-World Project Implementation on AWS
$15.99
$84.99
81% OFF
DEVOPS2026FEB
Enroll Now on Udemy →
🎉 Offer