Merge pull request #1878 from jamesob/doc_for_paramterized_lists

Document work-arounds necessary to parameterize list types.
This commit is contained in:
Paul Hinze 2015-05-08 17:02:36 -05:00
commit a268cc3d81
2 changed files with 24 additions and 1 deletions

View File

@ -112,7 +112,10 @@ The supported built-in functions are:
* `split(delim, string)` - Splits the string previously created by `join`
back into a list. This is useful for pushing lists through module
outputs since they currently only support string values.
outputs since they currently only support string values. Depending on the
use, the string this is being performed within may need to be wrapped
in brackets to indicate that the output is actually a list, e.g.
`a_resource_param = ["${split(",", var.CSV_STRING)}"]`.
Example: `split(",", module.amod.server_ids)`
## Templates

View File

@ -59,6 +59,26 @@ for a module by inspecting the source of it very easily.
Additionally, because these map directly to variables, they're always simple
key/value pairs. Modules can't have complex variable inputs.
## Dealing with parameters of the list type
Variables are currently unable to hold the list type. Sometimes, though, it's
desirable to parameterize a module's resource with an attribute that is of the
list type, for example `aws_instance.security_groups`.
Until a future release broadens the functionality of variables to include list
types, the way to work around this limitation is to pass a delimited string as
a module parameter, and then "unpack" that parameter using
[`split`](/docs/configuration/interpolation.html) interpolation function within
the module definition.
Depending on the resource parameter in question, you may have to
indicate that the unpacked string is actually a list by using list notation.
For example:
```
resource_param = ["${split(",", var.CSV_STRING)}"]
```
## Outputs
Modules can also specify their own [outputs](/docs/configuration/outputs.html).