0
0
Terraformcloud~5 mins

Numeric functions (min, max, ceil) in Terraform - Commands & Configuration

Choose your learning style9 modes available
Introduction
Sometimes you need to compare numbers or round them up when setting infrastructure values. Terraform has simple functions to find the smallest, largest, or round numbers up to the nearest whole number. These help make your infrastructure settings smart and flexible.
When you want to pick the smallest number from a list of resource limits to avoid over-provisioning.
When you need to select the largest number from multiple inputs to ensure enough capacity.
When you want to round up a fractional number to the next whole number for instance counts.
When calculating storage sizes that must be whole numbers but inputs might be decimals.
When setting thresholds or limits that depend on dynamic calculations and need safe rounding.
Config File - main.tf
main.tf
variable "cpu_limits" {
  type    = list(number)
  default = [1.5, 2.3, 1.8]
}

variable "memory_limits" {
  type    = list(number)
  default = [512, 1024, 768]
}

output "min_cpu" {
  value = min(var.cpu_limits...)
}

output "max_memory" {
  value = max(var.memory_limits...)
}

output "rounded_cpu" {
  value = ceil(2.3)
}

variable "cpu_limits": List of CPU values to compare.

variable "memory_limits": List of memory values to compare.

output "min_cpu": Shows the smallest CPU value from the list using min.

output "max_memory": Shows the largest memory value from the list using max.

output "rounded_cpu": Rounds up the number 2.3 to 3 using ceil.

Commands
Initialize the Terraform working directory to download providers and prepare for deployment.
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! You may now begin working with Terraform. Try running "terraform plan" to see any changes that are required for your infrastructure.
Apply the Terraform configuration to see the output values for min, max, and ceil functions.
Terminal
terraform apply -auto-approve
Expected OutputExpected
Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: # output.min_cpu will be created # output.max_memory will be created # output.rounded_cpu will be created Plan: 0 to add, 0 to change, 0 to destroy. Changes to Outputs: + max_memory = 1024 + min_cpu = 1.5 + rounded_cpu = 3 Apply complete! Resources: 0 added, 0 changed, 0 destroyed.
-auto-approve - Automatically approve the apply step without manual confirmation
Show the smallest CPU value calculated by the min function.
Terminal
terraform output min_cpu
Expected OutputExpected
1.5
Show the largest memory value calculated by the max function.
Terminal
terraform output max_memory
Expected OutputExpected
1024
Show the CPU value rounded up by the ceil function.
Terminal
terraform output rounded_cpu
Expected OutputExpected
3
Key Concept

If you remember nothing else from this pattern, remember: min picks the smallest number, max picks the largest, and ceil rounds numbers up to the next whole number.

Common Mistakes
Passing a list directly to min or max without unpacking it with ...
Terraform expects individual arguments for min and max, not a list, so it errors.
Use the spread operator ... to unpack the list when calling min or max, like min(var.list...).
Using ceil on a negative number expecting it to round down
ceil always rounds up, so negative numbers become less negative, not down.
Use floor to round down if that is the intended behavior.
Summary
Use min and max functions with the ... operator to find smallest or largest values from lists.
Use ceil to round decimal numbers up to the nearest whole number for resource counts.
Run terraform apply to see output values and terraform output to query them individually.