Bird
Raised Fist0
Terraformcloud~20 mins

File naming conventions (.tf files) in Terraform - Practice Problems & Coding Challenges

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
Challenge - 5 Problems
🎖️
Terraform File Naming Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
2:00remaining
Why use multiple .tf files in a Terraform project?

In Terraform, you can split your infrastructure code into multiple .tf files. What is the main reason for doing this?

ABecause Terraform requires each resource to be in a separate file to work correctly.
BTo organize code logically by resource type or purpose, making it easier to manage and understand.
CTo speed up Terraform plan and apply commands by parallel processing files.
DTo avoid using variables and outputs in the configuration.
Attempts:
2 left
💡 Hint

Think about how organizing files helps when your project grows.

✅ Best Practice
intermediate
2:00remaining
Which file name is best for defining variables in Terraform?

You want to define input variables for your Terraform project. Which file name follows common naming conventions?

Aterraform_variables.tf
Binput.tfvars
Cvars.txt
Dvariables.tf
Attempts:
2 left
💡 Hint

Look for the standard file name used in most Terraform projects.

❓ Configuration
advanced
2:00remaining
What happens if you have two files defining the same resource name?

Consider these two files in the same Terraform directory:

file1.tf:
resource "aws_s3_bucket" "mybucket" {
  bucket = "bucket-one"
}

file2.tf:
resource "aws_s3_bucket" "mybucket" {
  bucket = "bucket-two"
}

What will Terraform do when you run terraform plan?

ATerraform will raise an error about duplicate resource names and stop.
BTerraform will ignore the second resource and use only the first.
CTerraform will merge both resources into one with combined settings.
DTerraform will create two separate buckets with the same name.
Attempts:
2 left
💡 Hint

Think about how Terraform identifies resources uniquely.

❓ Architecture
advanced
2:00remaining
How should you name files to separate environment configurations?

You manage multiple environments like dev and prod in the same Terraform project. Which file naming approach is best to keep environment configs separate?

AUse files named <code>dev.tfvars</code> and <code>prod.tfvars</code> to hold environment-specific values.
BPut all environment configs in one file named <code>environment.tf</code> with comments.
CCreate separate directories named <code>dev</code> and <code>prod</code> with identical file names inside.
DUse a single file named <code>main.tf</code> and switch values manually before each run.
Attempts:
2 left
💡 Hint

Think about how Terraform loads variable values from files.

❓ service_behavior
expert
2:00remaining
What is the effect of naming a file terraform.tfstate in your working directory?

You accidentally create a file named terraform.tfstate manually in your Terraform directory before running any commands. What will happen when you run terraform apply?

ATerraform will overwrite the file without warning and proceed normally.
BTerraform will ignore the file and create its own state file elsewhere.
CTerraform will treat the file as the state file and may cause conflicts or errors if its content is invalid.
DTerraform will rename the file automatically to avoid conflicts.
Attempts:
2 left
💡 Hint

Think about how Terraform uses the state file to track resources.

Practice

(1/5)
1. Which of the following is the most common file name used to define the main Terraform configuration?
easy
A. terraform.tf
B. config.tf
C. setup.tf
D. main.tf

Solution

  1. Step 1: Understand common Terraform file names

    The main Terraform configuration is typically placed in a file named main.tf to keep it clear and standard.
  2. Step 2: Compare options with common practice

    Among the options, only main.tf is widely recognized and recommended for the main configuration.
  3. Final Answer:

    main.tf -> Option D
  4. Quick Check:

    Main configuration file = main.tf [OK]
Hint: Main config file is usually named main.tf [OK]
Common Mistakes:
  • Choosing uncommon names like config.tf
  • Using generic names like terraform.tf
  • Confusing setup files with main config
2. Which file name is conventionally used to declare input variables in Terraform?
easy
A. variables.tf
B. inputs.tf
C. vars.tf
D. params.tf

Solution

  1. Step 1: Identify the standard file for input variables

    Terraform commonly uses variables.tf to declare input variables for clarity and consistency.
  2. Step 2: Check other options for correctness

    Other names like inputs.tf, vars.tf, and params.tf are not standard and may confuse team members.
  3. Final Answer:

    variables.tf -> Option A
  4. Quick Check:

    Input variables file = variables.tf [OK]
Hint: Input variables go in variables.tf file [OK]
Common Mistakes:
  • Using inputs.tf instead of variables.tf
  • Shortening to vars.tf which is non-standard
  • Naming it params.tf which is unclear
3. Given these files in a Terraform project: main.tf, variables.tf, and outputs.tf, what is the purpose of outputs.tf?
medium
A. To define the resources to create
B. To declare input variables
C. To specify values to show after apply
D. To configure backend storage

Solution

  1. Step 1: Understand the role of outputs.tf

    The outputs.tf file is used to declare output values that Terraform will display after applying the configuration.
  2. Step 2: Differentiate from other files

    main.tf defines resources, variables.tf declares inputs, and backend configuration is usually in backend.tf or inside main.tf.
  3. Final Answer:

    To specify values to show after apply -> Option C
  4. Quick Check:

    outputs.tf shows output values [OK]
Hint: Outputs.tf shows results after apply [OK]
Common Mistakes:
  • Confusing outputs.tf with variables.tf
  • Thinking outputs.tf defines resources
  • Assuming outputs.tf configures backend
4. You have a Terraform project with files named main.tf, variables.tf, and output.tf. Why might this violate standard conventions?
medium
A. Because main.tf must contain outputs
B. Because the outputs file is misnamed; it should be outputs.tf
C. Because variables.tf is missing output declarations
D. Because Terraform requires outputs in a .json file

Solution

  1. Step 1: Check file naming conventions for outputs

    The conventional file name for outputs is outputs.tf (plural). Naming it output.tf (singular) violates standard conventions.
  2. Step 2: Understand Terraform file loading

    Terraform loads all .tf files regardless of name for functionality, but standard names improve clarity and teamwork.
  3. Final Answer:

    Because the outputs file is misnamed; it should be outputs.tf -> Option B
  4. Quick Check:

    outputs file = outputs.tf [OK]
Hint: Outputs file should be named outputs.tf [OK]
Common Mistakes:
  • Assuming outputs can be in variables.tf
  • Thinking main.tf must have outputs
  • Expecting outputs in JSON files
5. You want to organize a large Terraform project by splitting configurations into multiple files. Which naming approach best supports teamwork and maintenance?
hard
A. Use descriptive names like network.tf, compute.tf, variables.tf, outputs.tf
B. Name all files config1.tf, config2.tf, config3.tf for simplicity
C. Put all code in main.tf to avoid confusion
D. Use random names to avoid predictable patterns

Solution

  1. Step 1: Consider clarity and teamwork in file naming

    Descriptive file names like network.tf and compute.tf help team members quickly find and understand code sections.
  2. Step 2: Evaluate other naming options

    Generic names like config1.tf or random names cause confusion and make maintenance harder. Putting all code in one file reduces clarity.
  3. Final Answer:

    Use descriptive names like network.tf, compute.tf, variables.tf, outputs.tf -> Option A
  4. Quick Check:

    Descriptive file names improve teamwork [OK]
Hint: Use clear, descriptive file names for easier teamwork [OK]
Common Mistakes:
  • Using numbered or random file names
  • Putting all code in one file
  • Ignoring naming conventions for clarity