Bird
Raised Fist0
Terraformcloud~5 mins

Creating your first resource in Terraform - Quick Revision & Summary

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What is a resource in Terraform?
A resource in Terraform is a component of your infrastructure, like a server or database, that Terraform manages and creates for you.
Click to reveal answer
beginner
How do you define a resource in Terraform?
You define a resource using the resource block with a resource type and a name, for example:
resource "aws_instance" "example" {
ami = "ami-12345678"
instance_type = "t2.micro"
}
Click to reveal answer
beginner
What command do you run to apply your Terraform configuration and create resources?
You run terraform apply to create or update resources defined in your Terraform files.
Click to reveal answer
beginner
Why is it important to run terraform init before applying your configuration?
terraform init downloads necessary provider plugins and prepares your working directory so Terraform can manage resources properly.
Click to reveal answer
beginner
What does Terraform keep track of to know what resources it manages?
Terraform keeps a state file that records the current status of your infrastructure resources.
Click to reveal answer
Which Terraform command initializes your working directory and downloads providers?
Aterraform plan
Bterraform apply
Cterraform destroy
Dterraform init
What is the purpose of the resource block in Terraform?
ATo configure user permissions
BTo define infrastructure components to create
CTo store Terraform state
DTo write scripts for automation
Which command shows you what Terraform will do before making changes?
Aterraform init
Bterraform apply
Cterraform plan
Dterraform validate
What file does Terraform use to track the current state of your infrastructure?
Aterraform.tfstate
Bmain.tf
Cvariables.tf
Doutputs.tf
What happens when you run terraform apply?
ATerraform creates or updates resources as defined
BTerraform deletes all resources
CTerraform shows a plan but does not change anything
DTerraform initializes the directory
Explain the steps to create your first resource using Terraform.
Think about writing code, preparing Terraform, checking changes, then applying.
You got /4 concepts.
    Describe what Terraform state is and why it matters when creating resources.
    Imagine a checklist Terraform uses to remember what it created.
    You got /3 concepts.

      Practice

      (1/5)
      1. What is the main purpose of a resource block in Terraform?
      easy
      A. To write a script to run on a server
      B. To define a cloud component to create and manage
      C. To store variables for reuse
      D. To output values after deployment

      Solution

      1. Step 1: Understand Terraform resource blocks

        A resource block tells Terraform what cloud component to create, like a server or database.
      2. Step 2: Differentiate resource from other blocks

        Variables store data, outputs show results, scripts run commands. Only resource creates infrastructure.
      3. Final Answer:

        To define a cloud component to create and manage -> Option B
      4. Quick Check:

        Resource block = cloud component definition [OK]
      Hint: Resource blocks create cloud parts, not scripts or variables [OK]
      Common Mistakes:
      • Confusing resource with variable or output blocks
      • Thinking resource runs code on servers
      • Assuming resource stores data only
      2. Which of the following is the correct syntax to create an AWS S3 bucket resource named my_bucket in Terraform?
      easy
      A. resource "my_bucket" "aws_s3_bucket" {}
      B. resource aws_s3_bucket my_bucket {}
      C. resource "aws_s3_bucket" {}
      D. resource "aws_s3_bucket" "my_bucket" {}

      Solution

      1. Step 1: Recall Terraform resource syntax

        The syntax is: resource "resource_type" "resource_name" { ... } with quotes around type and name.
      2. Step 2: Match correct syntax

        resource "aws_s3_bucket" "my_bucket" {} matches this exactly with resource type aws_s3_bucket and name my_bucket in quotes.
      3. Final Answer:

        resource "aws_s3_bucket" "my_bucket" {} -> Option D
      4. Quick Check:

        Correct resource syntax uses quotes for type and name [OK]
      Hint: Resource type and name must be in quotes inside resource block [OK]
      Common Mistakes:
      • Omitting quotes around resource type or name
      • Swapping resource type and name order
      • Leaving resource name empty
      3. Given this Terraform resource block:
      resource "aws_instance" "example" {
        ami           = "ami-123456"
        instance_type = "t2.micro"
      }

      What will Terraform do when you run terraform apply?
      medium
      A. Output the AMI ID without creating resources
      B. Delete all EC2 instances in the account
      C. Create an AWS EC2 instance with the specified AMI and type
      D. Create an S3 bucket named example

      Solution

      1. Step 1: Identify resource type and attributes

        The resource is aws_instance named example with AMI and instance type set.
      2. Step 2: Understand Terraform apply behavior

        Terraform will create the EC2 instance with given AMI and instance type when applied.
      3. Final Answer:

        Create an AWS EC2 instance with the specified AMI and type -> Option C
      4. Quick Check:

        Resource block creates EC2 instance as defined [OK]
      Hint: Resource type aws_instance creates EC2 instances [OK]
      Common Mistakes:
      • Confusing resource type with S3 bucket
      • Thinking terraform apply deletes resources by default
      • Assuming terraform only outputs values
      4. You wrote this Terraform resource:
      resource "aws_s3_bucket" "mybucket" {
        bucket = mybucket
      }

      When running terraform plan, you get an error. What is the problem?
      medium
      A. The bucket name must be a quoted string, not a bare word
      B. Resource type aws_s3_bucket does not exist
      C. Resource name cannot be mybucket
      D. Missing required provider block

      Solution

      1. Step 1: Check bucket attribute syntax

        The bucket attribute expects a string value, so it must be in quotes like "mybucket".
      2. Step 2: Identify error cause

        Using bare word mybucket without quotes causes syntax error in Terraform.
      3. Final Answer:

        The bucket name must be a quoted string, not a bare word -> Option A
      4. Quick Check:

        String values require quotes in Terraform config [OK]
      Hint: Always quote string values in resource attributes [OK]
      Common Mistakes:
      • Forgetting quotes around string values
      • Assuming resource name restrictions cause error
      • Thinking provider block is missing for this error
      5. You want to create two AWS EC2 instances with Terraform using the same configuration but different names. Which is the best way to do this?
      hard
      A. Use a resource block with a count or for_each to create multiple instances
      B. Use a single resource block with a list of names in the bucket attribute
      C. Create one resource block and duplicate it manually in the config file
      D. Write two separate resource blocks with different names

      Solution

      1. Step 1: Understand multiple resource creation methods

        You can create multiple similar resources by repeating blocks or using count/for_each.
      2. Step 2: Identify best practice

        Using count or for_each is efficient and scalable compared to manual duplication or separate blocks.
      3. Final Answer:

        Use a resource block with a count or for_each to create multiple instances -> Option A
      4. Quick Check:

        count/for_each = best for multiple similar resources [OK]
      Hint: Use count or for_each for multiple similar resources [OK]
      Common Mistakes:
      • Manually duplicating resource blocks causes errors
      • Trying to pass list to unrelated attribute
      • Not using count or for_each for multiple resources