📖 Scenario: You are setting up a Terraform configuration to manage cloud resources. Some input variables come as strings, but you need to convert them to other types to use them correctly in your resource definitions.
🎯 Goal: Build a Terraform configuration that demonstrates converting string variables to number, boolean, and list types using Terraform's type conversion functions.
📋 What You'll Learn
Create input variables with string values
Add variables to hold converted types using Terraform type conversion functions
Use tonumber() to convert string to number
Use tobool() to convert string to boolean
Use tolist() to convert a tuple to a list
💡 Why This Matters
🌍 Real World
Cloud infrastructure often requires converting input data types to match resource argument expectations. This project shows how to handle string inputs and convert them properly in Terraform.
💼 Career
Understanding type conversion in Terraform is essential for cloud engineers and DevOps professionals to write flexible and error-free infrastructure code.
Progress0 / 4 steps
1
Create string input variables
Create three Terraform input variables with the exact names and string values: var_string_number with value "42", var_string_bool with value "true", and var_string_list with value ["a", "b", "c"] as a tuple of strings.
Terraform
Hint
Use variable blocks with default set to the exact string or tuple values.
2
Add variables for converted types
Create three local variables named number_value, bool_value, and list_value to hold the converted values from the input variables. Initialize them with the input variables but do not convert yet.
Terraform
Hint
Use a locals block and assign each local variable to the corresponding input variable.
3
Convert string variables to correct types
Update the local variables number_value, bool_value, and list_value to convert the input variables using Terraform's type conversion functions: use tonumber() for number_value, tobool() for bool_value, and tolist() for list_value.
Terraform
Hint
Use the functions tonumber(), tobool(), and tolist() around the input variables.
4
Use converted variables in a resource
Add a Terraform null_resource named example that uses the converted local variables in its triggers argument: set number_trigger to local.number_value, bool_trigger to local.bool_value, and list_trigger to local.list_value.
Terraform
Hint
Use a null_resource with a triggers map that references the converted local variables.
Practice
(1/5)
1. What does the Terraform function tostring() do?
easy
A. Converts a string to a number
B. Converts a value to a string type
C. Converts a list to a set
D. Converts a number to a boolean
Solution
Step 1: Understand the function purpose
The tostring() function is designed to convert any given value into a string representation.
Step 2: Match function to output type
Since it converts values to strings, it does not convert to numbers, sets, or booleans.
Final Answer:
Converts a value to a string type -> Option B
Quick Check:
tostring() = string [OK]
Hint: tostring() always outputs text format [OK]
Common Mistakes:
Confusing tostring() with tonumber()
Thinking tostring() converts to lists or sets
Assuming tostring() changes boolean values
2. Which of the following is the correct syntax to convert a string "123" to a number in Terraform?
easy
A. tonumber("123")
B. tostring(123)
C. tolist("123")
D. toset("123")
Solution
Step 1: Identify the function for string to number conversion
The function tonumber() converts strings that represent numbers into numeric types.
Step 2: Check syntax correctness
The syntax tonumber("123") correctly converts the string "123" to the number 123.
Final Answer:
tonumber("123") -> Option A
Quick Check:
tonumber("123") = 123 [OK]
Hint: Use tonumber() to convert numeric strings to numbers [OK]
Common Mistakes:
Using tostring() instead of tonumber()
Trying to convert string to list or set incorrectly
Missing quotes around the string input
3. What is the output of this Terraform expression?
tolist({"a" = 1, "b" = 2})
medium
A. Error: invalid argument
B. [1, 2]
C. ["a", "b"]
D. [{"a" = 1}, {"b" = 2}]
Solution
Step 1: Understand input type for tolist()
The input is a map {"a" = 1, "b" = 2}, but tolist() expects a tuple or list, not a map.
Step 2: Check if conversion is valid
Converting a map directly to a list using tolist() causes an error because the types are incompatible.
Final Answer:
Error: invalid argument -> Option A
Quick Check:
tolist() on map = error [OK]
Hint: tolist() needs list or tuple input, not maps [OK]
Common Mistakes:
Assuming tolist() converts maps to lists
Expecting keys or values as list output
Ignoring type mismatch errors
4. You wrote this Terraform code but get an error:
D. tonumber() cannot convert a set directly; it needs a single string or number
Solution
Step 1: Analyze the variable type
Variable "ids" is a set of strings, created by toset(["1", "2", "3"]).
Step 2: Check usage of tonumber()
The function tonumber() expects a single string or number, not a set. Passing a set causes an error.
Final Answer:
tonumber() cannot convert a set directly; it needs a single string or number -> Option D
Quick Check:
tonumber(set) = error [OK]
Hint: tonumber() works on single values, not collections [OK]
Common Mistakes:
Trying to convert whole sets with tonumber()
Confusing toset() behavior
Assuming output block syntax is wrong
5. You have a list of numbers as strings: ["10", "20", "30"]. You want to convert it to a set of numbers in Terraform. Which expression correctly does this?
hard
A. tolist(toset(["10", "20", "30"]))
B. toset(tolist(tonumber(["10", "20", "30"])))
C. toset([for v in ["10", "20", "30"] : tonumber(v)])
D. tonumber(toset(["10", "20", "30"]))
Solution
Step 1: Understand the input and desired output
The input is a list of strings representing numbers. The goal is to get a set of numbers.
Step 2: Use a for-expression to convert each string to number
Using [for v in list : tonumber(v)] converts each string to a number, producing a list of numbers.
Step 3: Convert the resulting list to a set
Wrapping the for-expression with toset() converts the list of numbers to a set.
Final Answer:
toset([for v in ["10", "20", "30"] : tonumber(v)]) -> Option C
Quick Check:
Convert strings to numbers then to set [OK]
Hint: Use for-expression with tonumber() inside toset() [OK]
Common Mistakes:
Trying to apply tonumber() directly to a list
Converting to list after tonumber() without iteration
Using tonumber() on a set directly
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.