This is part of an ongoing series of posts documenting the built-in interpolation functions in Terraform. For more information, check out the beginning post. In this post I am going to cover the ceil() function. The example file is on GitHub here.
Function name: ceil(float)
Returns: Rounds up to the closest integer, unless the float is already an integer value. Will attempt to perform implicit conversion of other data types to float prior to conversion.
Example:
variable "float" {
default = 41.66666666666
}
# Returns 42
output "float" {
value = "${ceil(var.float)}"
}
##############################################
# Function: ceil
##############################################
##############################################
# Variables
##############################################
variable "ceil" {
default = false
}
##############################################
# Resources
##############################################
##############################################
# Outputs
##############################################
output "ceil_output" {
value = "${ceil(var.ceil)}"
}
Run the following from the ceil folder to get example output for a number of different cases:
terraform apply -var 'ceil=5.9'
terraform apply -var 'ceil=-5.9'
terraform apply -var 'ceil=3.1'
terraform apply -var 'ceil=-3.1'
terraform apply -var 'ceil="-1"'
terraform apply -var 'ceil="String"'
terraform apply
Ceil or ceiling is a fairly common mathematical device. If you are going to be manipulating float values and need an integer, ceil might suit your needs.
I learned in the process that there is an implicit conversion of boolean true to float as 1 and false to float as 0. This conversion only happens when using a default value or passing the value in a tfvars file. True or false passed in the -var agrument will be treated as a string without conversion. Strings will be converted to float if it’s a number, but not if it’s regular text. Negative numbers are rounded up towards 0, so -5.9 is rounded up to -5. Fun stuff!
Coming up next is chomp() which is one of my favorite Mario characters.
Resourcely Guardrails and Blueprints
November 15, 2024
Deploying Azure Landing Zones with Terraform
November 12, 2024
October 18, 2024
What's New in the AzureRM Provider Version 4?
August 27, 2024