Bird
Raised Fist0
Terraformcloud~10 mins

Terraform in GitHub Actions - Interactive Code Practice

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
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to specify the Terraform version in the GitHub Actions workflow.

Terraform
jobs:
  terraform:
    runs-on: ubuntu-latest
    steps:
      - name: Setup Terraform
        uses: hashicorp/setup-terraform@v1
        with:
          terraform_version: [1]
Drag options to blanks, or click blank then click option'
Aterraform
Blatest
Cv1
D1.5.0
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'latest' instead of a specific version number.
Using 'v1' which is not a valid version format.
Leaving the version blank.
2fill in blank
medium

Complete the code to initialize Terraform in the GitHub Actions workflow.

Terraform
      - name: Terraform Init
        run: terraform [1]
Drag options to blanks, or click blank then click option'
Aapply
Bplan
Cinit
Dvalidate
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'apply' instead of 'init' for initialization.
Using 'plan' which only previews changes.
Using 'validate' which only checks configuration syntax.
3fill in blank
hard

Fix the error in the GitHub Actions step to apply Terraform changes automatically.

Terraform
      - name: Terraform Apply
        run: terraform apply -auto-[1]
Drag options to blanks, or click blank then click option'
Aapprove
Baccept
Cconfirm
Dapply
Attempts:
3 left
💡 Hint
Common Mistakes
Using '-auto-confirm' which is invalid.
Using '-auto-accept' which is invalid.
Using '-auto-apply' which is invalid.
4fill in blank
hard

Fill both blanks to configure the GitHub Actions workflow to checkout the repository and set environment variables.

Terraform
      - name: Checkout code
        uses: [1]
      - name: Set environment variables
        run: echo "TF_VAR_region=[2]" >> $GITHUB_ENV
Drag options to blanks, or click blank then click option'
Aactions/checkout@v3
Bhashicorp/setup-terraform@v1
Cus-west-2
Dterraform-latest
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'hashicorp/setup-terraform@v1' instead of checkout action.
Setting region to an invalid value like 'terraform-latest'.
5fill in blank
hard

Fill all three blanks to create a GitHub Actions step that runs 'terraform plan' and saves the output to a file.

Terraform
      - name: Terraform Plan
        run: terraform [1] -out=[2] && terraform show -json [2] > [3]
Drag options to blanks, or click blank then click option'
Aplan
Btfplan
Cplan.json
Dapply
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'apply' instead of 'plan' for the first blank.
Using invalid file names for output or JSON files.

Practice

(1/5)
1. What is the main purpose of using Terraform in GitHub Actions workflows?
easy
A. To store Terraform state files in GitHub issues
B. To manually edit cloud resources from GitHub
C. To automatically run Terraform commands when code changes
D. To replace Terraform CLI with GitHub commands

Solution

  1. Step 1: Understand Terraform automation

    Terraform automates cloud resource management by running commands like plan and apply.
  2. Step 2: Role of GitHub Actions

    GitHub Actions can trigger these Terraform commands automatically when code changes happen.
  3. Final Answer:

    To automatically run Terraform commands when code changes -> Option C
  4. Quick Check:

    Terraform automation = automatic runs [OK]
Hint: Terraform in GitHub Actions automates runs on code changes [OK]
Common Mistakes:
  • Thinking GitHub Actions replaces Terraform CLI
  • Believing Terraform state is stored in GitHub issues
  • Assuming manual edits happen inside GitHub
2. Which syntax correctly defines a GitHub Actions step to run terraform init?
easy
A. - name: Terraform Init command: terraform init
B. - run: terraform init name: Terraform Init
C. - step: terraform init run: true
D. - name: Terraform Init run: terraform init

Solution

  1. Step 1: Check GitHub Actions step syntax

    Steps use name and run keys to describe and execute commands.
  2. Step 2: Validate correct order and keys

    - name: Terraform Init run: terraform init uses name then run with the correct command string.
  3. Final Answer:

    - name: Terraform Init run: terraform init -> Option D
  4. Quick Check:

    Step keys = name + run [OK]
Hint: GitHub Actions steps use 'name' then 'run' keys [OK]
Common Mistakes:
  • Using 'command' instead of 'run'
  • Swapping order of keys causing confusion
  • Using invalid keys like 'step'
3. Given this GitHub Actions snippet, what will happen when a push occurs?
jobs:
  terraform:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Terraform Init
        run: terraform init
      - name: Terraform Plan
        run: terraform plan
medium
A. The workflow will fail due to missing apply step
B. Terraform will initialize and then create a plan for changes
C. Terraform will only checkout the code without running commands
D. Terraform will apply changes automatically

Solution

  1. Step 1: Analyze the steps in the workflow

    The workflow checks out code, runs terraform init, then runs terraform plan.
  2. Step 2: Understand Terraform commands effect

    terraform init prepares the environment; terraform plan shows what changes would happen but does not apply them.
  3. Final Answer:

    Terraform will initialize and then create a plan for changes -> Option B
  4. Quick Check:

    Init + Plan = prepare and preview [OK]
Hint: Init prepares, Plan previews changes, Apply makes changes [OK]
Common Mistakes:
  • Confusing plan with apply
  • Assuming apply runs automatically
  • Ignoring checkout step importance
4. You wrote this GitHub Actions step but it fails:
- name: Terraform Apply
  run: terraform apply -auto-approve
What is a common reason for failure in this context?
medium
A. Missing terraform init before apply
B. Using -auto-approve flag incorrectly
C. GitHub Actions does not support terraform apply
D. The step name must be 'Apply Terraform' exactly

Solution

  1. Step 1: Check Terraform command requirements

    Terraform requires terraform init to run first to set up backend and providers.
  2. Step 2: Identify missing initialization

    If terraform init is missing, terraform apply will fail due to uninitialized state.
  3. Final Answer:

    Missing terraform init before apply -> Option A
  4. Quick Check:

    Init must run before apply [OK]
Hint: Always run 'terraform init' before 'terraform apply' [OK]
Common Mistakes:
  • Thinking -auto-approve causes failure
  • Believing GitHub Actions blocks apply commands
  • Assuming step name affects execution
5. You want to securely store Terraform state remotely and run terraform apply only after manual approval in GitHub Actions. Which setup is best?
hard
A. Use a remote backend like AWS S3 for state and add a manual approval job before apply
B. Store state in GitHub repo and run apply automatically after plan
C. Keep state local and run apply in the same job as plan
D. Use GitHub Secrets to store state file content and apply immediately

Solution

  1. Step 1: Secure state storage best practice

    Remote backends like AWS S3 keep Terraform state safe and shared among users.
  2. Step 2: Implement manual approval in workflow

    GitHub Actions supports manual approval jobs to pause before applying changes.
  3. Step 3: Combine both for safe, controlled deployment

    Using remote state plus manual approval ensures safety and control over apply.
  4. Final Answer:

    Use a remote backend like AWS S3 for state and add a manual approval job before apply -> Option A
  5. Quick Check:

    Remote state + manual approval = safe apply [OK]
Hint: Remote state + manual approval = secure, controlled apply [OK]
Common Mistakes:
  • Storing state in repo risking conflicts
  • Running apply automatically without checks
  • Using secrets to store entire state file