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 Arguments and Expressions
📖 Scenario: You are setting up a simple cloud infrastructure using Terraform. You want to create a virtual machine with specific settings. To do this, you will use arguments and expressions in Terraform configuration files.
🎯 Goal: Build a Terraform configuration that defines a virtual machine resource with arguments and uses expressions to set values dynamically.
📋 What You'll Learn
Create a variable for the VM name
Define a resource block for a virtual machine
Use expressions to set the VM size based on a condition
Add a tag to the VM using an expression
💡 Why This Matters
🌍 Real World
Terraform is widely used to automate cloud infrastructure setup. Using arguments and expressions lets you create flexible and reusable configurations.
💼 Career
Understanding Terraform arguments and expressions is essential for cloud engineers and DevOps professionals to write efficient infrastructure as code.
Progress0 / 4 steps
1
Create a variable for the VM name
Create a Terraform variable called vm_name with the default value "my-vm".
Terraform
Hint
Use the variable block with a default argument.
2
Define a resource block for a virtual machine
Add a resource block called azurerm_linux_virtual_machine named example. Set the name argument to use the variable vm_name.
Terraform
Hint
Use resource "azurerm_linux_virtual_machine" "example" {} and set name = var.vm_name.
3
Use expressions to set the VM size based on a condition
Inside the azurerm_linux_virtual_machine.example resource, add an argument size that uses a conditional expression. If var.vm_name is equal to "my-vm", set size to "Standard_B1s", otherwise set it to "Standard_B2s".
Terraform
Hint
Use the ternary operator: condition ? true_value : false_value.
4
Add a tag to the VM using an expression
Inside the azurerm_linux_virtual_machine.example resource, add a tags argument. Set the tag Environment to "Production" if var.vm_name contains the substring "prod", otherwise set it to "Development". Use the strcontains() function in the expression.
2. Which of the following is the correct syntax to assign a variable value to an argument in Terraform?
easy
A. name := var.instance_name
B. name => var.instance_name
C. name == var.instance_name
D. name = var.instance_name
Solution
Step 1: Recall Terraform assignment syntax
Terraform uses single equals sign (=) to assign values to arguments.
Step 2: Match variable usage
Variables are referenced with var.<variable_name> and assigned using =.
Final Answer:
name = var.instance_name -> Option D
Quick Check:
Assignment uses = and var. prefix [OK]
Hint: Use = to assign variables in Terraform [OK]
Common Mistakes:
Using := or == instead of =
Confusing arrow => with assignment
Omitting var. prefix for variables
3. Given the Terraform expression count = var.enable ? 3 : 1 and var.enable = false, what will be the value of count?
medium
A. true
B. 3
C. 1
D. false
Solution
Step 1: Understand the ternary expression
The expression uses a condition: if var.enable is true, count is 3; else count is 1.
Step 2: Substitute variable value
Since var.enable is false, the expression returns the value after the colon, which is 1.
Final Answer:
1 -> Option C
Quick Check:
False condition returns second value [OK]
Hint: Ternary returns value after colon if condition is false [OK]
Common Mistakes:
Choosing the first value regardless of condition
Confusing boolean with numeric output
Ignoring variable value in expression
4. What is wrong with this Terraform argument expression?
size = var.instance_size ? "large" : "small"
assuming var.instance_size is a string variable.
medium
A. Ternary condition requires a boolean, not a string
B. Strings cannot be used in ternary expressions
C. The quotes around "large" and "small" are invalid
D. Variable names cannot be used in expressions
Solution
Step 1: Check ternary condition type
The condition before ? must be boolean (true/false), but var.instance_size is a string.
Step 2: Identify type mismatch error
Using a string as condition causes an error because Terraform expects a boolean expression.
Final Answer:
Ternary condition requires a boolean, not a string -> Option A
Quick Check:
Condition must be boolean [OK]
Hint: Ternary condition must be true/false, not string [OK]
Common Mistakes:
Using strings as conditions
Misplacing quotes around values
Assuming variables can't be in expressions
5. You want to create multiple AWS EC2 instances only if var.create_instances is true. Which expression correctly sets the count argument to 5 when true, or 0 when false?
hard
A. count = var.create_instances == 5
B. count = var.create_instances ? 5 : 0
C. count = var.create_instances && 5
D. count = var.create_instances || 0
Solution
Step 1: Understand conditional count setting
We want count to be 5 if var.create_instances is true, else 0.
Step 2: Evaluate each option
count = var.create_instances ? 5 : 0 uses ternary: if true, 5; else 0. Options B, C, D misuse operators or return booleans.
Final Answer:
count = var.create_instances ? 5 : 0 -> Option B
Quick Check:
Ternary sets count correctly [OK]
Hint: Use ternary to set count based on boolean variable [OK]
Common Mistakes:
Using boolean expressions instead of numbers for count