Bird
Raised Fist0
Terraformcloud~10 mins

Tuple type definition in Terraform - Step-by-Step Execution

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
Process Flow - Tuple type definition
Start: Define tuple type
Specify element types in order
Use tuple type in variable or output
Assign values matching types and order
Terraform validates types
Apply configuration or error
End
This flow shows how to define a tuple type by listing element types in order, assign matching values, and let Terraform validate them.
Execution Sample
Terraform
variable "example_tuple" {
  type = tuple([string, number, bool])
  default = ["hello", 42, true]
}
Defines a variable with a tuple type of string, number, and bool, then assigns matching default values.
Process Table
StepActionType CheckResult
1Define variable with tuple type [string, number, bool]N/AVariable declared
2Assign default value ["hello", 42, true]Check element 0 is stringPass
3Check element 1 is numberCheck element 1 is numberPass
4Check element 2 is boolPassPass
5All elements match tuple typePassVariable ready for use
6Terraform apply uses variableN/AConfiguration applied successfully
💡 All tuple elements match their types, so Terraform accepts the variable.
Status Tracker
VariableStartAfter AssignmentFinal
example_tupleundefined["hello", 42, true]["hello", 42, true]
Key Moments - 2 Insights
Why must the order of types in the tuple match the order of values?
Because Terraform checks each value against the type at the same position in the tuple, as shown in steps 2-4 of the execution_table.
What happens if a value does not match its tuple type?
Terraform will raise a type error and stop applying the configuration, preventing deployment.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what type is checked at step 3?
Astring
Bnumber
Cbool
Dlist
💡 Hint
Refer to step 3 in execution_table where element 1 is checked.
At which step does Terraform confirm all tuple elements match their types?
AStep 4
BStep 2
CStep 5
DStep 6
💡 Hint
Look for the step that says 'All elements match tuple type' in execution_table.
If the second value was a string instead of a number, what would happen?
ATerraform would raise a type error at step 3
BTerraform would accept it without error
CTerraform would ignore the type and continue
DTerraform would convert the string to a number automatically
💡 Hint
Check step 3 in execution_table where type checking occurs.
Concept Snapshot
Tuple type definition in Terraform:
- Use tuple([type1, type2, ...]) to define fixed ordered types.
- Values must match types and order exactly.
- Terraform validates each element during apply.
- Mismatched types cause errors and stop deployment.
Full Transcript
This visual execution shows how to define a tuple type in Terraform by specifying an ordered list of types. A variable is declared with tuple([string, number, bool]) and assigned values ["hello", 42, true]. Terraform checks each element's type in order: first string, then number, then bool. All checks pass, so the variable is valid and the configuration applies successfully. If any value did not match its type, Terraform would raise an error and stop. The key is that tuple types require exact order and type matching for each element.

Practice

(1/5)
1. What is a tuple type in Terraform?
easy
A. A fixed list of values where each value has a specific type
B. A list of values all having the same type
C. A map with keys and values of any type
D. A variable that can hold any type of data

Solution

  1. Step 1: Understand tuple definition

    A tuple in Terraform is a collection of values with a fixed number and specific types for each position.
  2. Step 2: Compare with other types

    Unlike lists, tuples have fixed length and types per position, not all the same type.
  3. Final Answer:

    A fixed list of values where each value has a specific type -> Option A
  4. Quick Check:

    Tuple = fixed types and order [OK]
Hint: Remember: tuple = fixed order and types [OK]
Common Mistakes:
  • Confusing tuple with list (all same type)
  • Thinking tuple can have variable length
  • Mixing tuple with map types
2. Which of the following is the correct syntax to define a tuple type with a string and a number in Terraform?
easy
A. tuple([string, number])
B. tuple[string, number]
C. list([string, number])
D. tuple(string, number)

Solution

  1. Step 1: Recall tuple syntax

    Terraform tuple types are defined as tuple([type1, type2, ...]), using square brackets inside parentheses.
  2. Step 2: Check options

    The correct syntax is tuple([string, number]). Options B and D are invalid syntax. list([string, number]) is a list, not a tuple.
  3. Final Answer:

    tuple([string, number]) -> Option A
  4. Quick Check:

    Tuple syntax = tuple([type1, type2]) [OK]
Hint: Use tuple([type1, type2]) syntax with square brackets inside parentheses [OK]
Common Mistakes:
  • Using parentheses without square brackets
  • Using square brackets without parentheses
  • Confusing tuple syntax with list syntax
3. Given this variable definition in Terraform:
variable "example" {
  type = tuple([string, number, bool])
  default = ["hello", 42, true]
}
What will be the value of var.example[1]?
medium
A. "hello"
B. true
C. Error: invalid index
D. 42

Solution

  1. Step 1: Understand tuple indexing

    Tuple elements are indexed starting at 0. The second element is at index 1.
  2. Step 2: Identify value at index 1

    The tuple is ["hello", 42, true], so index 1 is 42.
  3. Final Answer:

    42 -> Option D
  4. Quick Check:

    Index 1 in tuple = 42 [OK]
Hint: Tuple index starts at 0, so second item is index 1 [OK]
Common Mistakes:
  • Confusing index 1 with index 0
  • Expecting string instead of number at index 1
  • Thinking tuple elements are unordered
4. What is wrong with this Terraform tuple type definition?
variable "bad_tuple" {
  type = tuple([string, number])
  default = ["text", "not a number"]
}
medium
A. The tuple type syntax is incorrect
B. The default value does not match the tuple types
C. Tuple cannot have string and number types together
D. Default value must be a map, not a list

Solution

  1. Step 1: Check tuple type syntax

    The syntax tuple([string, number]) is correct for a tuple with two elements.
  2. Step 2: Validate default values

    The default is ["text", "not a number"]. The second element should be a number but is a string, causing a type mismatch.
  3. Final Answer:

    The default value does not match the tuple types -> Option B
  4. Quick Check:

    Tuple types must match default values [OK]
Hint: Check default values match tuple types exactly [OK]
Common Mistakes:
  • Assuming tuple syntax is wrong
  • Ignoring type mismatch in default values
  • Thinking tuples can't mix types
5. You want to define a Terraform variable that holds a tuple with three elements: a string, a list of numbers, and a boolean. Which is the correct type definition?
hard
A. tuple(string, list[number], bool)
B. tuple(string, list, bool)
C. tuple([string, list(number), bool])
D. tuple[string, list(number), bool]

Solution

  1. Step 1: Understand tuple element types

    The tuple has three elements: a string, a list of numbers, and a boolean.
  2. Step 2: Use correct syntax for list of numbers

    In Terraform, list of numbers is written as list(number). So the tuple type is tuple([string, list(number), bool]).
  3. Step 3: Check options

    tuple([string, list(number), bool]) matches the correct syntax. Others use invalid syntax like list[number] or brackets.
  4. Final Answer:

    tuple([string, list(number), bool]) -> Option C
  5. Quick Check:

    List type inside tuple uses list(type) [OK]
Hint: Use list(type) inside tuple for lists [OK]
Common Mistakes:
  • Using square brackets instead of parentheses for list
  • Omitting type inside list
  • Using tuple with square brackets incorrectly