Bird
Raised Fist0
Terraformcloud~30 mins

Terraform Cloud overview - Mini Project: Build & Apply

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
Terraform Cloud overview
📖 Scenario: You are working as a cloud engineer for a small company. Your team wants to start using Terraform Cloud to manage infrastructure safely and collaboratively.Terraform Cloud helps teams store infrastructure code, run Terraform plans and applies remotely, and keep track of changes.
🎯 Goal: Build a simple Terraform Cloud workspace configuration that connects to a version control repository and sets up a basic infrastructure plan.
📋 What You'll Learn
Create a Terraform Cloud organization variable
Configure a Terraform Cloud workspace with a VCS repository
Set the Terraform Cloud workspace to use the correct Terraform version
Add a basic Terraform configuration file to define infrastructure
💡 Why This Matters
🌍 Real World
Terraform Cloud is used by teams to collaborate on infrastructure as code, manage state remotely, and automate infrastructure deployments safely.
💼 Career
Understanding Terraform Cloud workspace configuration is essential for cloud engineers and DevOps professionals managing infrastructure with Terraform in a team environment.
Progress0 / 4 steps
1
Create Terraform Cloud organization variable
Create a variable called terraform_cloud_organization and set it to the string "my-org" which represents your Terraform Cloud organization name.
Terraform
Hint

Use the syntax variable_name = "value" to create a string variable.

2
Configure Terraform Cloud workspace with VCS repository
Create a Terraform resource block terraform_cloud_workspace named example that sets name to "example-workspace", organization to the variable terraform_cloud_organization, and configures vcs_repo with identifier set to "my-org/my-repo" and branch set to "main".
Terraform
Hint

Use a resource block with nested vcs_repo block to configure the workspace.

3
Set Terraform version for the workspace
Inside the terraform_cloud_workspace resource named example, add the attribute terraform_version and set it to "1.5.0" to specify the Terraform version used in this workspace.
Terraform
Hint

Add the terraform_version attribute inside the workspace resource block.

4
Add basic Terraform configuration file
Create a Terraform configuration file named main.tf that defines a resource aws_s3_bucket named example_bucket with bucket set to "my-example-bucket-12345" and acl set to "private".
Terraform
Hint

Use a resource block with the AWS S3 bucket resource type and set the required attributes.

Practice

(1/5)
1. What is the main purpose of Terraform Cloud?
easy
A. To host websites built with Terraform
B. To replace Terraform CLI on your local machine
C. To store Terraform state remotely and run Terraform commands safely
D. To provide a graphical interface for writing Terraform code

Solution

  1. Step 1: Understand Terraform Cloud's role

    Terraform Cloud stores state files remotely and runs Terraform commands in a managed environment.
  2. Step 2: Compare options with this role

    Only To store Terraform state remotely and run Terraform commands safely correctly describes this purpose; others describe unrelated functions.
  3. Final Answer:

    To store Terraform state remotely and run Terraform commands safely -> Option C
  4. Quick Check:

    Terraform Cloud = Remote state + safe runs [OK]
Hint: Remember Terraform Cloud manages state and runs commands remotely [OK]
Common Mistakes:
  • Thinking Terraform Cloud replaces local CLI
  • Confusing Terraform Cloud with a code editor
  • Assuming Terraform Cloud hosts websites
2. Which Terraform configuration block connects your code to Terraform Cloud?
easy
A. terraform { backend "cloud" { ... } }
B. terraform { cloud { organization = "org" } }
C. provider "cloud" { organization = "org" }
D. resource "cloud" { organization = "org" }

Solution

  1. Step 1: Identify the correct block for Terraform Cloud

    The terraform { cloud { ... } } block is used to configure Terraform Cloud settings.
  2. Step 2: Check other options for correctness

    terraform { backend "cloud" { ... } } uses backend "cloud" which is invalid; provider and resource blocks are unrelated.
  3. Final Answer:

    terraform { cloud { organization = "org" } } -> Option B
  4. Quick Check:

    Cloud config = terraform block with cloud [OK]
Hint: Look for terraform { cloud { ... } } syntax [OK]
Common Mistakes:
  • Using backend "cloud" instead of cloud block
  • Confusing provider or resource blocks with cloud config
  • Missing the organization attribute inside cloud block
3. Given this Terraform snippet, what happens when you run terraform apply?
terraform {
  cloud {
    organization = "my-org"
    workspaces {
      name = "my-workspace"
    }
  }
}
medium
A. Terraform ignores the cloud block and runs with default settings
B. Terraform runs locally and stores state on your machine
C. Terraform throws a syntax error due to missing backend block
D. Terraform connects to Terraform Cloud and uses the specified workspace

Solution

  1. Step 1: Analyze the cloud block configuration

    The cloud block specifies organization and workspace, so Terraform connects to Terraform Cloud.
  2. Step 2: Understand Terraform apply behavior with cloud config

    Terraform runs remotely using the workspace and stores state in Terraform Cloud.
  3. Final Answer:

    Terraform connects to Terraform Cloud and uses the specified workspace -> Option D
  4. Quick Check:

    Cloud block present = remote run in workspace [OK]
Hint: Presence of cloud block means remote run in Terraform Cloud [OK]
Common Mistakes:
  • Assuming local run despite cloud block
  • Expecting syntax error without backend block
  • Ignoring workspace setting in cloud block
4. You added this block to your Terraform config but get an error:
terraform {
  cloud {
    organization = "my-org"
  }
}
What is the likely cause?
medium
A. Missing workspace configuration inside the cloud block
B. Incorrect organization name format
C. Terraform Cloud requires a backend block instead
D. The cloud block must be inside a provider block

Solution

  1. Step 1: Check required fields in cloud block

    Terraform Cloud requires workspace info inside the cloud block to know where to store state.
  2. Step 2: Identify missing workspace causes error

    Without workspace, Terraform cannot connect properly, causing an error.
  3. Final Answer:

    Missing workspace configuration inside the cloud block -> Option A
  4. Quick Check:

    Cloud block needs workspace info [OK]
Hint: Always include workspace inside cloud block [OK]
Common Mistakes:
  • Assuming organization name format is wrong
  • Thinking backend block is mandatory with cloud block
  • Placing cloud block inside provider block
5. You want to share Terraform state safely among your team using Terraform Cloud. Which steps should you take to set this up correctly?
hard
A. Configure terraform { cloud { organization = "org" workspaces { name = "ws" } } } and push code to VCS connected to Terraform Cloud
B. Run Terraform locally and manually upload state files to Terraform Cloud
C. Use a local backend and share the state file via email with your team
D. Configure a provider block for Terraform Cloud and run terraform init locally

Solution

  1. Step 1: Set up Terraform Cloud connection in config

    Use the terraform { cloud { ... } } block with organization and workspace to connect to Terraform Cloud.
  2. Step 2: Integrate with version control system (VCS)

    Push your Terraform code to a VCS repository linked to Terraform Cloud for automated runs and shared state.
  3. Final Answer:

    Configure terraform { cloud { organization = "org" workspaces { name = "ws" } } } and push code to VCS connected to Terraform Cloud -> Option A
  4. Quick Check:

    Cloud block + VCS = safe shared state [OK]
Hint: Use cloud block and VCS integration for team state sharing [OK]
Common Mistakes:
  • Uploading state files manually instead of using Terraform Cloud
  • Sharing state files via email (unsafe and error-prone)
  • Misusing provider block for Terraform Cloud connection