Bird
Raised Fist0
Terraformcloud~5 mins

String functions (join, split, format) in Terraform - Commands & Configuration

Choose your learning style10 modes available
Introduction
Terraform string functions help you change and combine text easily. They solve problems like joining words with separators, splitting text into parts, and inserting values into templates.
When you want to combine a list of server names into a single comma-separated string for configuration.
When you receive a string of IP addresses separated by spaces and need to split them into a list for processing.
When you want to create a formatted message that includes variable values like region or environment.
When you need to build resource names dynamically by joining parts with dashes.
When you want to parse a string input into components to use separately in your infrastructure code.
Config File - main.tf
main.tf
variable "server_names" {
  type    = list(string)
  default = ["app1", "app2", "app3"]
}

variable "ip_string" {
  type    = string
  default = "192.168.1.1 192.168.1.2 192.168.1.3"
}

output "joined_servers" {
  value = join(",", var.server_names)
}

output "split_ips" {
  value = split(" ", var.ip_string)
}

output "formatted_message" {
  value = format("Servers: %s are running in %s environment.", join(", ", var.server_names), "production")
}

variable "server_names" defines a list of server names.

variable "ip_string" holds a space-separated string of IP addresses.

output "joined_servers" uses join to combine server names with commas.

output "split_ips" uses split to turn the IP string into a list.

output "formatted_message" uses format to create a message inserting joined server names and environment.

Commands
Initialize the Terraform working directory to download necessary plugins and prepare for execution.
Terminal
terraform init
Expected OutputExpected
Initializing the backend... Initializing provider plugins... - Finding latest version of hashicorp/random... - Installing hashicorp/random v3.4.3... - Installed hashicorp/random v3.4.3 (signed by HashiCorp) Terraform has been successfully initialized!
Apply the Terraform configuration to see the outputs of string functions without manual approval.
Terminal
terraform apply -auto-approve
Expected OutputExpected
Apply complete! Resources: 0 added, 0 changed, 0 destroyed. Outputs: formatted_message = "Servers: app1, app2, app3 are running in production environment." joined_servers = "app1,app2,app3" split_ips = [ "192.168.1.1", "192.168.1.2", "192.168.1.3", ]
→
-auto-approve - Skip manual approval to apply changes immediately
Display the output value that shows the joined server names as a single string.
Terminal
terraform output joined_servers
Expected OutputExpected
app1,app2,app3
Display the output value that shows the list of IP addresses after splitting the string.
Terminal
terraform output split_ips
Expected OutputExpected
["192.168.1.1", "192.168.1.2", "192.168.1.3"]
Key Concept

If you remember nothing else from this pattern, remember: join combines lists into strings, split breaks strings into lists, and format inserts values into text templates.

Common Mistakes
Using join with a separator but passing a string instead of a list.
join expects a list as the second argument; passing a string causes an error.
Always pass a list of strings to join, like join(",", var.server_names).
Using split with a separator that does not exist in the string.
split returns the whole string as a single element list if the separator is not found, which may not be expected.
Ensure the separator matches the string format, for example split(" ", var.ip_string) if IPs are space-separated.
Using format placeholders incorrectly, like missing %s or wrong number of arguments.
format requires placeholders to match the number of arguments; mismatch causes errors.
Count placeholders and arguments carefully, e.g., format("Hello %s", "world").
Summary
Use terraform init to prepare your working directory before applying configurations.
Use join to combine lists of strings into one string with separators.
Use split to break a string into a list based on a separator.
Use format to create strings with inserted variable values.
Use terraform output commands to see the results of your string functions.

Practice

(1/5)
1. What does the Terraform function join(",", ["a", "b", "c"]) return?
easy
A. "a,b,c"
B. ["a", "b", "c"]
C. "a b c"
D. "abc"

Solution

  1. Step 1: Understand the join function

    The join function combines list elements into a single string using the given separator.
  2. Step 2: Apply join with separator ','

    Joining ["a", "b", "c"] with "," results in the string "a,b,c".
  3. Final Answer:

    "a,b,c" -> Option A
  4. Quick Check:

    join with comma = "a,b,c" [OK]
Hint: Join combines list items with separator into one string [OK]
Common Mistakes:
  • Confusing join output with original list
  • Using space instead of comma as separator
  • Expecting a list instead of a string
2. Which of the following is the correct syntax to split the string "one,two,three" into a list using Terraform?
easy
A. format(",", "one,two,three")
B. split("one,two,three", ",")
C. split(",", "one,two,three")
D. join(",", "one,two,three")

Solution

  1. Step 1: Recall split function syntax

    The split function takes the separator first, then the string to split.
  2. Step 2: Match correct argument order

    Only split(",", "one,two,three") matches the correct syntax.
  3. Final Answer:

    split(",", "one,two,three") -> Option C
  4. Quick Check:

    split(separator, string) = split(",", "one,two,three") [OK]
Hint: split(separator, string) order matters in Terraform [OK]
Common Mistakes:
  • Swapping arguments order in split
  • Using join instead of split
  • Using format instead of split
3. What is the output of this Terraform expression?
format("Hello %s, you have %d messages", "Alice", 5)
medium
A. "Hello Alice, you have 5 messages"
B. "Hello Alice, you have %d messages"
C. "Hello %s, you have %d messages"
D. "Hello %s, you have 5 messages"

Solution

  1. Step 1: Understand format placeholders

    %s is replaced by string, %d by integer in order.
  2. Step 2: Replace placeholders with arguments

    "Alice" replaces %s, 5 replaces %d, producing "Hello Alice, you have 5 messages".
  3. Final Answer:

    "Hello Alice, you have 5 messages" -> Option A
  4. Quick Check:

    format with %s and %d = formatted string [OK]
Hint: format replaces %s and %d placeholders in order [OK]
Common Mistakes:
  • Not replacing placeholders
  • Mixing up %s and %d types
  • Expecting original string without substitution
4. Identify the error in this Terraform code snippet:
locals {
  parts = split(",", "apple,banana,orange")
  result = join(";", parts)
  message = format("Fruits: %s", result)
}
medium
A. join separator should be a list, not a string
B. split function arguments are reversed
C. format placeholder %s cannot accept a string
D. No error, code is correct

Solution

  1. Step 1: Check split function usage

    split separator and string are correctly ordered.
  2. Step 2: Check join and format usage

    join uses string separator ";" correctly; format uses %s for string correctly.
  3. Final Answer:

    No error, code is correct -> Option D
  4. Quick Check:

    split, join, format used correctly = No error, code is correct [OK]
Hint: Check argument order and placeholder types carefully [OK]
Common Mistakes:
  • Swapping split arguments
  • Using wrong placeholder in format
  • Passing wrong types to join
5. You have a list of IP addresses: ["10.0.0.1", "10.0.0.2", "10.0.0.3"]. You want to create a single string with these IPs separated by commas, but enclosed in square brackets like this:
[10.0.0.1,10.0.0.2,10.0.0.3]
Which Terraform expression achieves this?
hard
A. join(",", format("[%s]", ["10.0.0.1", "10.0.0.2", "10.0.0.3"]))
B. format("[%s]", join(",", ["10.0.0.1", "10.0.0.2", "10.0.0.3"]))
C. split(",", format("[%s]", join(",", ["10.0.0.1", "10.0.0.2", "10.0.0.3"])))
D. format(join(",", ["10.0.0.1", "10.0.0.2", "10.0.0.3"]), "[%s]")

Solution

  1. Step 1: Join IP list with commas

    Using join(",", [...]) creates "10.0.0.1,10.0.0.2,10.0.0.3".
  2. Step 2: Use format to add square brackets

    Wrapping the joined string with format("[%s]", ...) adds brackets around it.
  3. Final Answer:

    format("[%s]", join(",", ["10.0.0.1", "10.0.0.2", "10.0.0.3"])) -> Option B
  4. Quick Check:

    join then format = format("[%s]", join(",", ["10.0.0.1", "10.0.0.2", "10.0.0.3"])) [OK]
Hint: Join first, then format to add brackets [OK]
Common Mistakes:
  • Trying to format before join
  • Using split instead of join
  • Incorrect argument order in format
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard