diff --git a/website/source/docs/configuration/interpolation.html.md b/website/source/docs/configuration/interpolation.html.md index 74b946cf1..0d15cc9dd 100644 --- a/website/source/docs/configuration/interpolation.html.md +++ b/website/source/docs/configuration/interpolation.html.md @@ -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.