📖 Scenario: You are working as a cloud engineer who needs to understand the basics of two popular infrastructure tools: AWS CloudFormation and Terraform. Both help you create and manage cloud resources, but they use different ways to describe your infrastructure.Imagine you want to create a simple cloud setup with a virtual server. You will write small pieces of code to represent this setup in both CloudFormation and Terraform formats.
🎯 Goal: Build simple configuration snippets for AWS EC2 instance creation using both CloudFormation and Terraform syntax. This will help you see how each tool defines infrastructure and understand their differences.
📋 What You'll Learn
Create a CloudFormation template snippet defining an EC2 instance with a specific name and instance type.
Create a Terraform configuration snippet defining an EC2 instance with the same name and instance type.
Add a variable or parameter to each snippet to specify the instance type.
Show the final combined snippets representing the EC2 instance creation in both tools.
💡 Why This Matters
🌍 Real World
Cloud engineers often need to write infrastructure code to create and manage cloud resources. Knowing both CloudFormation and Terraform helps them work with different teams and projects.
💼 Career
Understanding these tools is essential for roles like Cloud Engineer, DevOps Engineer, and Site Reliability Engineer, as they automate cloud infrastructure deployment and management.
Progress0 / 4 steps
1
Create CloudFormation EC2 Instance Snippet
Create a CloudFormation template snippet that defines an EC2 instance resource named MyEC2Instance with the instance type t2.micro. Use the resource type AWS::EC2::Instance and set the InstanceType property to t2.micro.
AWS
Hint
Use YAML format with Resources as the root key. Define MyEC2Instance under it with the correct type and properties.
2
Add CloudFormation Parameter for Instance Type
Add a CloudFormation Parameters section to your template with a parameter named InstanceTypeParam. Set its type to String and default value to t2.micro. Then update the InstanceType property of MyEC2Instance to use this parameter with !Ref InstanceTypeParam.
AWS
Hint
Parameters go at the top level. Use !Ref to refer to the parameter inside the resource properties.
3
Create Terraform EC2 Instance Snippet
Create a Terraform configuration snippet that defines an AWS EC2 instance resource named my_ec2_instance using the resource type aws_instance. Set the instance_type attribute to t2.micro and the ami attribute to ami-0c55b159cbfafe1f0 (a common Amazon Linux 2 AMI).
AWS
Hint
Use Terraform HCL syntax. The resource block starts with resource "aws_instance" "my_ec2_instance".
4
Add Terraform Variable for Instance Type
Add a Terraform variable named instance_type with a default value of t2.micro. Then update the instance_type attribute of my_ec2_instance resource to use this variable with var.instance_type.
AWS
Hint
Define variables outside resource blocks. Use var.instance_type inside the resource to refer to the variable.
Practice
(1/5)
1. Which statement best describes the main difference between AWS CloudFormation and Terraform?
easy
A. CloudFormation works only with AWS, while Terraform supports multiple cloud providers.
B. Terraform is only for AWS, CloudFormation supports all clouds.
C. Both tools only work with AWS services.
D. CloudFormation supports multiple clouds, Terraform is AWS-only.
Solution
Step 1: Understand CloudFormation scope
CloudFormation is designed specifically for AWS and manages AWS resources only.
Step 2: Understand Terraform scope
Terraform supports many cloud providers like AWS, Azure, Google Cloud, and more.
Final Answer:
CloudFormation works only with AWS, while Terraform supports multiple cloud providers. -> Option A