Terraform
10. Built-In Functions

10. Built-In Functions

While Terraform is not an imperitive programming language such as Python, there are a number of functions you can use to manipulate variable values. These can be called when assigning values in a resource or data source, or when create locals. There are many more than we will discuss in this course, but here are a few common examples.

Mathematical Functions

  • ceil - Rounds a decimal number up to the nearest whole number, e.g. ceil(4.1) returns 5
  • floor - Rounds a decimal number down to the nearest whole number, e.g. floor(4.1) returns 4
  • parseint - Converts a number represented as a string into a number, based on a given base, e.g. parseint("100", 10) returns 10, but parseint("100", 2) returns 4

String Functions

  • replace - Replace all instances of a given substring within a string, e.g. replace("prp_123456", "prp_", "") returns "123456"
  • lower - Converts a given string to all lower case, e.g. lower("BaNANas") returns "bananas"
  • trimspace - Remove any whitespace (space, tabs, newlines etc.) from the start and end of a string, e.g. trimspace(" Hello, there \n\n") returns "Hello, there"

Collection Functions

  • compact - Takes a list of strings and returns a new list with any null or empty string elements removed, e.g. compact(["a", "", "b", null, "c"]) returns ["a","b","c"]
  • concat - Takes two or more lists and combines them into a single list, e.g. concat(["a", ""], ["b", "c"]) returns ["a","","b","c"]
  • length - Determines the length of a given list, map, or string, e.g. length(["a", "b"]) returns 2

File Functions

  • file - Load the contents of a local file, e.g. filecontent = file("${path.module}/data.txt")
  • templatefile - Load the contents of a file and replace variable values from a given set, e.g. filecontent = templatefile("${path.module}/data.txt", my_vars)

Encoding Functions

  • jsondecode - Convert a json string into a Terraform variable, e.g. data = jsondecode(local.file_content)
  • base64decode - Convert base64-encoded data into a regular UTF-8 string, e.g. base64decode("SGVsbG8gV29ybGQ=") returns "Hello World"

Type-Conversion Functions

  • tostring - Convert a numberl, or boolean into a string, e.g. tostring(1) returns "1" and tostring(true) returns "true"
  • tobool - Convert the strings "true" or "false" into actual boolean values, e.g. tobool("true") returns true

These are a very small subset of all the functions you can use in Terraform, and you can find the full list here (opens in a new tab)


Exercise

Configure

In your main.tf create 3 local variables.

Update

Use at least one built-in function on each variable to change its value.

Outputs

Create outputs for the values. Although not necessary, but for standardization remember to add your outputs to your outputs.tf file.

Plan/Apply

Run terraform plan to show the outputs in the terminal. You can also run terraform apply and that will save the outputs to the Terraform state file.


2024 Advanced Solutions Team - Akamai Technical Documentation