0
0
Terraformcloud~30 mins

Data source vs resource difference in Terraform - Hands-On Comparison

Choose your learning style9 modes available
Understanding Data Source vs Resource in Terraform
📖 Scenario: You are setting up cloud infrastructure using Terraform. You need to understand the difference between data sources and resources in Terraform to manage your infrastructure effectively.
🎯 Goal: Build a simple Terraform configuration that uses a data block to read existing information and a resource block to create new infrastructure.
📋 What You'll Learn
Create a data source block to fetch existing AWS AMI information
Create a resource block to launch an AWS EC2 instance using the fetched AMI
Use exact block names and attributes as specified
Follow Terraform best practices for configuration
💡 Why This Matters
🌍 Real World
Terraform data sources let you read existing cloud information, like AMIs, without creating them. Resources let you create and manage cloud infrastructure, like EC2 instances.
💼 Career
Understanding data sources vs resources is essential for cloud engineers and DevOps professionals to write efficient and reusable Terraform configurations.
Progress0 / 4 steps
1
Create a data source to fetch the latest Amazon Linux 2 AMI
Write a Terraform data block named aws_ami with the name amazon_linux that fetches the latest Amazon Linux 2 AMI using the filter name = "amzn2-ami-hvm-*-x86_64-gp2" and owners set to ["amazon"].
Terraform
Need a hint?

Use a data block with type aws_ami and name amazon_linux. Set most_recent to true. Use a filter block with name and values. Set owners to ["amazon"].

2
Create a resource to launch an EC2 instance using the fetched AMI
Add a Terraform resource block named aws_instance with the name example. Use the AMI ID from the data source data.aws_ami.amazon_linux.id and set the instance type to t2.micro.
Terraform
Need a hint?

Use a resource block with type aws_instance and name example. Set ami to data.aws_ami.amazon_linux.id and instance_type to t2.micro.

3
Add a tag to the EC2 instance resource
Inside the aws_instance.example resource block, add a tags attribute with a map containing Name = "ExampleInstance".
Terraform
Need a hint?

Add a tags block inside the resource with Name = "ExampleInstance".

4
Add provider configuration for AWS
At the top of the file, add a provider block for aws with the region set to us-east-1.
Terraform
Need a hint?

Add a provider block for aws with region = "us-east-1" at the top of the file.