HashiCorp Terraform is a powerful infrastructure-as-code tool that allows you to define and provision infrastructure resources using a declarative configuration language. When working with Terraform, you may encounter situations where you need to convert a string into a list. This can be especially useful when dealing with configurations or data retrieved from external sources. In this article, we’ll explore the problem of converting a string to a list in Terraform and provide a step-by-step solution.

The Problem

Consider a scenario where you are using Terraform to manage infrastructure configurations, and you have a string variable that contains a comma-separated values. Maybe this string variable is passed in as an input variable to the Terraform project.

my_var = "foo, bar, xid, b59"

You may encounter a scenario where you need to convert this string into a list of individual elements; like this:

my_list = ["foo", "bar", "xid", "b59"]

This type of transformation may be essential when receiving a comma-separated string as input but need to work with it as a list in your Terraform resource configuration.

The Solution

To convert a string to a list in Terraform, you can follow these steps:

1. Using the split Function

The split function is used to break a string into a list of substrings based on a specified delimiter. In our case, we want to split the string using a comma and space as the delimiter:

my_var = "foo, bar, xid, b59"
my_list = split(", ", var.my_var)

Here, split(", ", var.my_var) takes the my_var variable, splits it at each occurrence of ", ", and returns a list of substrings.

2. Using the tolist Function

After splitting the string, you will have a list of substrings. However, these substrings are still represented as strings. To convert them into a list, you can use the tolist function:

my_var = "foo, bar, xid, b59"
my_list = tolist(split(", ", var.my_var))

The tolist function takes the result of split and converts it into a proper list. Now, my_list will contain ["foo", "bar", "xid", "b59"].

Practical Usage

Converting strings to lists in Terraform is particularly useful in various real-world scenarios:

1. Dealing with Input Data

When you receive input data from external sources, such as user inputs or data from other systems, it may be provided as a comma-separated string. Converting it into a list makes it easier to work with in your Terraform configurations.

2. Configuration Options

In Terraform, you might have configuration options that require a list of values. By converting a string to a list, you can dynamically generate these lists based on user inputs or other factors.

3. Resource Provisioning

When provisioning resources, you might need to pass a list of values to resource attributes. Converting a string to a list allows you to generate these lists programmatically based on your requirements.

Conclusion

Transforming a string to a list in Terraform is a common task that can greatly enhance the flexibility and usability of your configurations. By using the split and tolist functions, you can easily achieve this transformation and work with your data more effectively. Whether you’re dealing with user inputs, configuration options, or resource provisioning, this technique will prove valuable in various Terraform scenarios.

Chris Pietschmann is a Microsoft MVP, HashiCorp Ambassador, and Microsoft Certified Trainer (MCT) with 20+ years of experience designing and building Cloud & Enterprise systems. He has worked with companies of all sizes from startups to large enterprises. He has a passion for technology and sharing what he learns with others to help enable them to learn faster and be more productive.
Microsoft MVP HashiCorp Ambassador

Discover more from Build5Nines

Subscribe now to keep reading and get access to the full archive.

Continue reading