Clarify math operations available for interpolation
As reported in #2782, the math operations, specifically subtraction, can cause unexpected behavior when resource or variable names use hyphens. I added clarification about using spaces with math operators as well as which operations are available.
This commit is contained in:
parent
41c732dd6c
commit
30d57bf1ec
|
@ -17,7 +17,7 @@ The interpolation syntax is powerful and allows you to reference
|
|||
variables, attributes of resources, call functions, etc.
|
||||
|
||||
You can also perform simple math in interpolations, allowing
|
||||
you to write expressions such as `${count.index+1}`.
|
||||
you to write expressions such as `${count.index + 1}`.
|
||||
|
||||
You can escape interpolation with double dollar signs: `$${foo}`
|
||||
will be rendered as a literal `${foo}`.
|
||||
|
@ -92,7 +92,7 @@ The supported built-in functions are:
|
|||
format. The syntax for the format is standard `sprintf` syntax.
|
||||
Good documentation for the syntax can be [found here](http://golang.org/pkg/fmt/).
|
||||
Example to zero-prefix a count, used commonly for naming servers:
|
||||
`format("web-%03d", count.index+1)`.
|
||||
`format("web-%03d", count.index + 1)`.
|
||||
|
||||
* `formatlist(format, args...)` - Formats each element of a list
|
||||
according to the given format, similarly to `format`, and returns a list.
|
||||
|
@ -201,3 +201,34 @@ resource "aws_instance" "web" {
|
|||
|
||||
With this, we will build a list of `template_file.web_init` resources which we can
|
||||
use in combination with our list of `aws_instance.web` resources.
|
||||
|
||||
## Math
|
||||
|
||||
Simple math can be performed in interpolations:
|
||||
|
||||
```
|
||||
variable "count" {
|
||||
default = 2
|
||||
}
|
||||
|
||||
resource "aws_instance" "web" {
|
||||
// ...
|
||||
count = "${var.count}"
|
||||
|
||||
// tag the instance with a counter starting at 1, ie. web-001
|
||||
tags {
|
||||
Name = "${format("web-%03d", count.index + 1)}"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
The supported operations are:
|
||||
|
||||
- *Add*, *Subtract*, *Multiply*, and *Divide* for **float** types
|
||||
- *Add*, *Subtract*, *Multiply*, *Divide*, and *Modulo* for **integer** types
|
||||
|
||||
-> **Note:** Since Terraform allows hyphens in resource and variable names,
|
||||
it's best to use spaces between math operators to prevent confusion or unexpected
|
||||
behavior. For example, `${var.instance-count - 1}` will subtract **1** from the
|
||||
`instance-count` variable value, while `${var.instance-count-1}` will interpolate
|
||||
the `instance-count-1` variable value.
|
||||
|
|
Loading…
Reference in New Issue