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 Object Type Definition
📖 Scenario: You are setting up a Terraform configuration to manage cloud resources. You want to define a clear structure for a server configuration using an object type. This helps you organize server details like name, CPU count, and memory size.
🎯 Goal: Create a Terraform variable with an object type that defines a server configuration with specific attributes.
📋 What You'll Learn
Define a variable named server_config with an object type
The object must have attributes: name (string), cpu (number), and memory (number)
Assign default values: name as "web-server", cpu as 4, and memory as 8192
💡 Why This Matters
🌍 Real World
Defining object types in Terraform helps organize complex configurations like server setups, making infrastructure code clearer and easier to maintain.
💼 Career
Cloud engineers and DevOps professionals use Terraform object types to create reusable and structured infrastructure modules.
Progress0 / 4 steps
1
Create the initial variable declaration
Create a Terraform variable named server_config with type object having attributes name (string), cpu (number), and memory (number). Do not add default values yet.
Terraform
Hint
Use variable "server_config" {} block and define type = object({...}) with the attributes inside.
2
Add default values to the object variable
Add a default attribute to the server_config variable with values: name as "web-server", cpu as 4, and memory as 8192.
Terraform
Hint
Use default = { name = "web-server", cpu = 4, memory = 8192 } inside the variable block.
3
Reference the object variable in a resource
Create a Terraform resource aws_instance named example that uses the server_config variable's attributes for instance_type and tags.Name. Use cpu to decide instance type as "t3.medium" if cpu is 2, otherwise "t3.large". Use server_config.name for the tag.
Terraform
Hint
Use a conditional expression for instance_type and reference var.server_config.name for tags.
4
Add memory attribute usage in user_data
Add a user_data attribute to the aws_instance.example resource that echoes the memory size from server_config.memory in megabytes using a shell command.
Terraform
Hint
Use a heredoc for user_data and include the memory value with interpolation.
Practice
(1/5)
1. What is the main purpose of defining an object type in Terraform?
easy
A. To group related values with specific names and types
B. To create a list of strings
C. To define a single integer value
D. To write shell scripts inside Terraform
Solution
Step 1: Understand object type concept
An object type groups multiple related values, each with a name and a type.
Step 2: Compare with other types
Unlike lists or single values, objects organize structured data clearly.
Final Answer:
To group related values with specific names and types -> Option A
Quick Check:
Object type = group related named values [OK]
Hint: Objects group named values, not single or list values [OK]
Common Mistakes:
Confusing object with list or map types
Thinking object holds only one value
Assuming object is for scripting
2. Which of the following is the correct syntax to define an object type with a string field name and a number field age in Terraform?
easy
A. object({ name string, age number })
B. object({ name: string, age: number })
C. object({ "name" = string, "age" = number })
D. object({ name = string, age = number })
Solution
Step 1: Recall object type syntax
Terraform object types use curly braces with unquoted identifier keys and equal signs: object({ key = type, ... })
Step 2: Check each option
object({ name = string, age = number }) correctly uses unquoted keys and equal signs. Others use invalid syntax like colons, quoted keys for simple identifiers, or missing equals.
Final Answer:
object({ name = string, age = number }) -> Option D
Quick Check:
Object keys unquoted with = sign [OK]
Hint: Object keys use unquoted identifiers with = type [OK]
Common Mistakes:
Using colons instead of equal signs
Quoting keys in object type
Omitting commas or using wrong separators
3. Given this variable definition in Terraform:
variable "person" {
type = object({
name = string
age = number
})
default = {
name = "Alice"
age = 30
}
}
What will be the value of var.person.age?
medium
A. "30"
B. 30
C. null
D. Error: type mismatch
Solution
Step 1: Analyze variable type and default
The variable is an object with fields name (string) and age (number). Default sets age to 30 (number).
Step 2: Determine var.person.age value
Accessing var.person.age returns the number 30 as defined.
Final Answer:
30 -> Option B
Quick Check:
Object field age = 30 number [OK]
Hint: Object fields keep their defined types and values [OK]
Common Mistakes:
Thinking number becomes string automatically
Expecting null if not accessed
Confusing default with no value
4. Identify the error in this Terraform object type definition:
Quoted keys are allowed, default values match types, booleans are valid.
Final Answer:
The type int is invalid; should be number -> Option A
Quick Check:
Use number, not int, for numeric types [OK]
Hint: Use 'number' type, not 'int' in Terraform objects [OK]
Common Mistakes:
Using 'int' instead of 'number'
Thinking keys cannot be quoted
Believing booleans are invalid in objects
5. You want to define a Terraform variable that accepts an object with a name (string), tags (map of strings), and an optional count (number). Which is the correct way to define this object type?
hard
A. object({ name = string, tags = map(string), count = number })