Bird
Raised Fist0
Terraformcloud~5 mins

State and real infrastructure mapping in Terraform - Cheat Sheet & Quick Revision

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 the purpose of Terraform state?
Terraform state keeps track of the resources it manages. It maps the configuration to real infrastructure so Terraform knows what exists and what needs to change.
Click to reveal answer
beginner
How does Terraform use the state file during deployment?
Terraform reads the state file to understand current infrastructure. It compares this to the desired configuration to plan changes.
Click to reveal answer
intermediate
What can happen if the Terraform state file is lost or corrupted?
Terraform may lose track of resources, causing it to try to recreate or delete resources incorrectly. This can lead to downtime or resource duplication.
Click to reveal answer
intermediate
Why is remote state storage recommended in Terraform?
Remote state storage allows teams to share the state file safely. It prevents conflicts and keeps state backed up and secure.
Click to reveal answer
beginner
What is the difference between Terraform configuration and Terraform state?
Configuration is the code describing desired infrastructure. State is the snapshot of what Terraform has created and manages in the real world.
Click to reveal answer
What does Terraform state file primarily store?
ACloud provider billing info
BUser credentials
CTerraform configuration code
DCurrent infrastructure resource details
Why should Terraform state be stored remotely in team environments?
ATo allow multiple users to access and update state safely
BTo speed up Terraform execution
CTo reduce cloud costs
DTo encrypt Terraform configuration files
What happens if Terraform state is out of sync with real infrastructure?
ATerraform may try to recreate or delete resources incorrectly
BTerraform automatically fixes the state file
CTerraform ignores the state and applies changes blindly
DTerraform deletes all resources
Which command updates the Terraform state to match real infrastructure without making changes?
Aterraform apply
Bterraform refresh
Cterraform init
Dterraform plan
What is stored in Terraform configuration files?
ACloud provider API keys
BCurrent infrastructure state
CDesired infrastructure setup
DTerraform state file backup
Explain how Terraform state helps map configuration to real infrastructure.
Think about how Terraform knows what exists and what to change.
You got /4 concepts.
    Describe best practices for managing Terraform state in a team environment.
    Consider how teams avoid conflicts and data loss.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of the Terraform state file?
      easy
      A. To keep track of real infrastructure resources Terraform manages
      B. To store user credentials for cloud providers
      C. To define the desired infrastructure configuration
      D. To log errors during Terraform runs

      Solution

      1. Step 1: Understand Terraform state role

        The state file records what resources Terraform has created or manages in the real world.
      2. Step 2: Differentiate state from config and logs

        The configuration defines desired setup, but state tracks actual deployed resources. Credentials and logs are separate concerns.
      3. Final Answer:

        To keep track of real infrastructure resources Terraform manages -> Option A
      4. Quick Check:

        State tracks real resources [OK]
      Hint: State file = Terraform's memory of real resources [OK]
      Common Mistakes:
      • Confusing state file with configuration files
      • Thinking state stores credentials
      • Assuming state logs errors
      2. Which Terraform command shows the current state of resources managed by Terraform?
      easy
      A. terraform init
      B. terraform plan
      C. terraform apply
      D. terraform state list

      Solution

      1. Step 1: Identify command to inspect state

        "terraform state list" displays all resources tracked in the current state file.
      2. Step 2: Differentiate from other commands

        "terraform plan" previews changes, "apply" makes changes, "init" sets up backend and providers.
      3. Final Answer:

        terraform state list -> Option D
      4. Quick Check:

        State inspection command = terraform state list [OK]
      Hint: Use 'terraform state list' to see tracked resources [OK]
      Common Mistakes:
      • Using 'terraform plan' to check state directly
      • Confusing 'terraform apply' with state inspection
      • Thinking 'terraform init' shows state
      3. Given this Terraform state snippet showing one AWS instance resource:
      {
        "resources": [
          {
            "type": "aws_instance",
            "name": "web",
            "instances": [
              {"attributes": {"id": "i-1234567890abcdef0", "ami": "ami-0abc1234", "instance_type": "t2.micro"}}
            ]
          }
        ]
      }
      What is the instance type Terraform currently tracks for this resource?
      medium
      A. t2.micro
      B. ami-0abc1234
      C. i-1234567890abcdef0
      D. aws_instance

      Solution

      1. Step 1: Locate instance_type attribute in state

        The attribute "instance_type" has value "t2.micro" in the resource's attributes.
      2. Step 2: Understand attribute meanings

        "ami" is the image ID, "id" is the instance ID, "type" is resource type, so only "instance_type" matches the question.
      3. Final Answer:

        t2.micro -> Option A
      4. Quick Check:

        Instance type in state = t2.micro [OK]
      Hint: Look for 'instance_type' attribute in state JSON [OK]
      Common Mistakes:
      • Confusing AMI ID with instance type
      • Picking resource type as instance type
      • Choosing instance ID instead of type
      4. You ran terraform apply but your real infrastructure changed outside Terraform. What should you do to fix the state mismatch?
      medium
      A. Run terraform destroy to remove all resources
      B. Run terraform refresh to update the state file with real resource data
      C. Manually edit the state file to match real resources
      D. Delete the state file and run terraform init again

      Solution

      1. Step 1: Understand state drift problem

        When real resources change outside Terraform, state file becomes outdated and causes mismatch.
      2. Step 2: Use terraform refresh to sync state

        "terraform refresh" updates the state file to reflect current real infrastructure without changing resources.
      3. Final Answer:

        Run terraform refresh to update the state file with real resource data -> Option B
      4. Quick Check:

        Sync state with real infra = terraform refresh [OK]
      Hint: Use 'terraform refresh' to sync state with real resources [OK]
      Common Mistakes:
      • Deleting state file causes loss of tracking
      • Editing state file manually risks corruption
      • Destroying resources is unnecessary for state fix
      5. You want to share your Terraform state securely among your team using a remote backend. Which approach best ensures state consistency and safety?
      hard
      A. Email the state file to team members after each change
      B. Store the state file on a shared network drive without locking
      C. Use a remote backend like AWS S3 with state locking via DynamoDB
      D. Keep the state file local on each developer's machine

      Solution

      1. Step 1: Identify remote backend with locking

        A remote backend like AWS S3 combined with DynamoDB locking prevents simultaneous edits and keeps state consistent.
      2. Step 2: Evaluate other options for safety

        Shared drives without locking risk conflicts, emailing state causes version confusion, local files prevent collaboration.
      3. Final Answer:

        Use a remote backend like AWS S3 with state locking via DynamoDB -> Option C
      4. Quick Check:

        Remote backend + locking = safe shared state [OK]
      Hint: Use remote backend with locking for team state safety [OK]
      Common Mistakes:
      • Ignoring state locking leads to conflicts
      • Sharing state by email causes outdated copies
      • Local state prevents team collaboration