Commit Graph

201 Commits

Author SHA1 Message Date
Mitchell Hashimoto bac66430cb
terraform: consistent variable values for booleans
Fixes #6447

This ensures that all variables of type string are consistently
converted to a string value upon running Terraform.

The place this is done is in the `Variables()` call within the
`terraform` package. This is the function responsible for loading and
merging the variables from the various sources and seems ideal for
proper conversion to consistent values for various types. We actually
already had tests to this effect.

This also adds docs that talk about the fake-ish boolean variables
Terraform currently has and about how in future versions we'll likely
support them properly, which can cause BC issues so beware.
2016-10-31 11:22:26 -07:00
James Turnbull 18b3736ba4 Pass over the Interpolation page (#9703)
* Pass over the Interpolation page

Fixes some grammar, typos and structure. Updated some headings and fixed
a couple of spelling mistakes.

* Added proper note syntax

* Turned some notes into actual notes

* Couple of minor typos just noticed
2016-10-29 01:13:09 +01:00
Jesse Szwedko 0fbd72a355 Add some basic math interpolation functions
Support the following math functions for interpolation:

* ceil
* floor
* max
* min

Fixes #7409
2016-10-28 17:49:31 +00:00
Mitchell Hashimoto 296ce59f37 Merge pull request #9624 from rottenbytes/TF-9169
Add a note about operator precedence. #9169
2016-10-27 08:14:45 -04:00
James Nugent 47bce79b29 core: Add zipmap interpolation function
This commit adds a new interpolation function, zipmap, which produces a
map given a list of string keys and a list of values of the same length
as the list of keys.

The name comes from the same operation in Clojure (and likely other
functional langauges).
2016-10-26 11:28:36 -05:00
Gustavo 5910e3b8af Adds ‘tittle’ built-in function. (#9087)
The tittle function returns a copy of the string with the first characters of all the words capitalized.
2016-10-26 13:21:32 +01:00
Nicolas Szalay c1be0c51c6 Add a note about operator precedence. #9169 2016-10-26 14:03:50 +02:00
James Turnbull 15e42ac939 Added provider to meta-param resource docs
I am not sure `provider` IS a meta-param but it looks like one...
2016-10-25 06:56:33 -04:00
James Turnbull f83c988496 Added another anchor 2016-10-25 03:39:15 -04:00
James Turnbull 0d5f86bd0d Cleanup of the resources and variables pages
1. Added a heredoc example to the variables page.
2. Tidied up and added headers.
3. Some minor whitespace and grammar edits.
2016-10-24 20:05:25 +11:00
James Turnbull e0fab2267b I'd like to be able to anchor to functions 2016-10-21 17:28:01 +11:00
clint shryock b87a071bfe fix broken link 2016-10-20 10:09:15 -05:00
James Turnbull affb2c6511 Added list element syntax 2016-10-18 23:37:50 +11:00
James Turnbull 68b88f273e Some edits to the variables sections
1. Fixes a duplicate word.
2. Fixes a variety of formatting.
3. Re-structures variable assignment section.
4. Sets Notes to consistent style.
2016-10-18 04:35:39 +11:00
James Nugent d12b637602 docs: Clarify terraform.tfvars file additions 2016-10-17 11:39:12 -05:00
John Bruett 08ef4c0dd3 Update variables.html.md regarding variable files
Add information under Variable Files to explain how terraform.tfvars file is used.  currently that documenation only exists in the getting started guide.  The added information was taken directly from the getting started guide.
2016-10-17 12:29:57 -04:00
Nick Walke b361347812
Added the word string to make more sense 2016-10-07 10:24:06 -05:00
Nick Walke 10419405a7
Corrected a plural 2016-10-07 10:23:11 -05:00
Nick Walke 04d0d0f0ae
Added explicit map and list variable usage
This page did not show how to actually use a list as a list.  The
variables page states that "The usage of maps, list, strings, etc. is
documented fully in the interpolation syntax page", but that wasn't the
case.

I've split them out to list them explicitly and provide examples of
each.

Closes #9037
2016-10-07 10:20:17 -05:00
Ivan Vergiliev 7b301d7411 Point resource docs to the correct URL (#8969) 2016-09-21 08:32:08 -05:00
Emilien Kenler d6296fbb7d
Correct the data source configuration example to be valid 2016-09-21 17:31:44 +09:00
Radek Simko 43de2afde1
docs: Fix misspelled words 2016-09-12 07:08:00 +01:00
Christoph Blecker c3ab4a1352
Reword "Multiple Provider Instances" documentation
Fixes #8702.
2016-09-07 20:55:03 -07:00
Paul Stack b49fbb5383 Merge pull request #8566 from MiLk/docs/interpolation-template-data
Template are now data sources
2016-09-04 00:30:11 +03:00
Sander van Harmelen 47dd1ad153 Add wildcard (match all) support to ignore_changes (#8599) 2016-09-02 15:44:35 +02:00
zhuk-intetics 3308b974e2 Update interpolation.html.md 2016-08-31 10:19:17 +03:00
Emilien Kenler 95a86cc617
Template are now data sources 2016-08-31 12:04:55 +09:00
Mitchell Hashimoto d32487c335
website: remove numeric suffixes, they haven't worked in real long time 2016-08-22 14:43:58 -07:00
Seth Vargo 988b0325a1 Add more output grammar and CLI examples 2016-08-21 15:17:31 -04:00
alex goretoy 7938eaf76f Fix typo on interpolation.html.md (#8274) 2016-08-17 16:07:52 -05:00
James Nugent 9fa978a45f docs: Fix map key interpolation documentation
Previously was recommending the now-invalid dot syntax for map keys,
change to using HIL indexing.
2016-08-09 16:03:05 -04:00
Cecchi MacNaughton 8d9a9ddebe Correct typo in `length()` documentation (#7947) 2016-08-03 18:48:00 +01:00
James Bardin 2a11f3a138 make variadic syntax consistent in docs 2016-08-02 09:34:29 -04:00
James Bardin 068059ab3f Add `merge` doc 2016-08-02 09:33:08 -04:00
Paul Hinze d50aeeef0d
website: Docs sweep for lists & maps 2016-07-28 15:49:53 -05:00
Paul Hinze 88030764ff
config: Audit all interpolation functions for list/map behavior
- `distinct()` - error on non-flat lists
 - `element()` - error on non-flat lists
 - `join()` - error on non-flat lists
 - `length()` - support maps
 - `lookup()` - error on non-flat maps
 - `values()` - error on non-flat maps
2016-07-28 09:56:30 -05:00
Paul Hinze 1425b34562
config: Add map() interpolation function
* `map(key, value, ...)` - Returns a map consisting of the key/value pairs
  specified as arguments. Every odd argument must be a string key, and every
  even argument must have the same type as the other values specified.
  Duplicate keys are not allowed. Examples:
  * `map("hello", "world")`
  * `map("us-east", list("a", "b", "c"), "us-west", list("b", "c", "d"))`
2016-07-27 13:03:08 -05:00
James Bardin 2bd7cfd5fe Expand list interpolation to lists and maps
Allow lists and maps within the list interpolation function via variable
interpolation. Since this requires setting the variadic type to TypeAny,
we check for non-heterogeneous lists in the callback.
2016-07-19 13:44:37 -04:00
James Nugent 58dd41f3b1 core: Add list() interpolation function
The list() interpolation function provides a way to add support for list
literals (of strings) to HIL without having to invent new syntax for it
and modify the HIL parser.

It presents as a function, thus:

    - list() -> []
    - list("a") -> ["a"]
    - list("a", "b") -> ["a", "b"]

Thanks to @wr0ngway for the idea of this approach, fixes #7460.
2016-07-18 18:12:11 -04:00
Mike LoSapio 6f9b3aa4fd Clarify join produces a string 2016-07-07 09:51:15 -04:00
James Bardin 80365282cc Add documentation for keys and values
Add documentation for the keys and values interpolation functions
2016-06-29 15:11:08 -04:00
James Nugent 0885aeef93 docs: Mention map keys which start with a number
Fixes #6857.
2016-06-22 12:05:12 +03:00
James Nugent 4b6a632246 core: Rename uniq -> distinct and add docs 2016-06-15 13:25:17 +02:00
Veselin Kantsev b0a99ce35e corrected "here doc" syntax notes 2016-06-12 18:57:13 +01:00
James Nugent 578ff9569e core: Add sort() interpolation function 2016-06-11 18:03:52 +01:00
Mark Bainter 267d206a52 Update examples using concat with strings
Since using concat() to join strings is deprecated and soon to be removed, this patch updates the sha examples to use interpolation instead.
2016-06-03 17:49:54 -05:00
Chris Weyl 92e23d2252 add an example of cidrsubnet() being used with ipv6
...as this will hopefully clue people in that this function will indeed
work to manipulate ipv6 networks.

Not that I completely spaced on that for quite some time, or anything
like that.

Nope, not me.  Not at all.
2016-05-29 15:41:16 -05:00
David Adams 8a4fdc3dd5 Update docs for lookup() interpolation function
Add specifics about using the optional third argument for providing a
default value.
2016-05-25 19:35:09 -05:00
amangoel f891ab81f4 Update variables.html.md (#6869) 2016-05-25 16:38:32 +01:00
David Glasser 594ea105d8 config: support lists and maps in jsonencode
For now we only support lists and maps whose values are strings, not
deeply nested data.
2016-05-18 10:46:06 -07:00
Martin Atkins 64f2651204 website: Initial documentation about data sources
This will undoubtedly evolve as implementation continues, but this is some
initial documentation based on the design doc.
2016-05-14 08:26:36 -07:00
James Nugent b62f6af158 core: Add support for marking outputs as sensitive (#6559)
* core: Add support for marking outputs as sensitive

This commit allows an output to be marked "sensitive", in which case the
value is redacted in the post-refresh and post-apply list of outputs.

For example, the configuration:

```
variable "input" {
    default = "Hello world"
}

output "notsensitive" {
    value = "${var.input}"
}

output "sensitive" {
    sensitive = true
    value = "${var.input}"
}
```

Would result in the output:

```
terraform apply

Apply complete! Resources: 0 added, 0 changed, 0 destroyed.

Outputs:

  notsensitive = Hello world
  sensitive    = <sensitive>
```

The `terraform output` command continues to display the value as before.

Limitations: Note that sensitivity is not tracked internally, so if the
output is interpolated in another module into a resource, the value will
be displayed. The value is still present in the state.
2016-05-09 15:46:07 -04:00
Mårten Gustafson 5b7f12ecd7 Tweak docs to properly document .tfvars format (#6415)
As reported and described in hashicorp/terraform#3292
2016-04-29 14:06:36 +01:00
David Glasser 6cf06bb3ab config: new interpolation function jsonencode 2016-03-29 07:38:58 -07:00
Paul Hinze 293c6ca68c Revert "Revert "core: Add uuid() interpolate function.""
This reverts commit 661be01d9b.
2016-03-21 15:14:30 -05:00
Paul Hinze 661be01d9b Revert "core: Add uuid() interpolate function." 2016-03-15 18:39:34 -05:00
Paul Hinze 1e0b8ea478 core: Add uuid() interpolate function.
Utilizes hashicorp's go-uuid library for proper random seeding setup.
2016-03-10 18:39:07 -06:00
gamename c6b350b98e docs(variables): describe order of evaluation with files 2016-03-01 17:08:57 -06:00
Radek Simko bb5af50b25 docs: Document new interpolation function md5 2016-02-24 13:01:05 +00:00
Radek Simko b90cd618c2 docs: Sort interpolation functions alphabetically 2016-02-24 13:01:05 +00:00
Feanil Patel 8fbacf7261 Fix -module-depth typo
The module depth parameter had an equal sign instead of a dash in the name.
2016-02-23 20:02:36 -05:00
Paul Hinze a7b8a54a83 website: clarify `file()` base location
refs #5213
2016-02-19 09:56:55 -06:00
Radek Simko 14e6f6e4ce docs: Clarify example usage of the signum function 2016-02-07 20:28:58 +00:00
Radek Simko 4edf782260 Merge pull request #4854 from jfromaniello/add_signum_interpolation
Add signum interpolation function
2016-02-07 19:44:16 +00:00
Radek Simko 1018af5662 config: Add docs for new base64sha256 func 2016-01-30 13:19:10 +01:00
Colin Hebert d92d205dd9 rename trim to trimspace 2016-01-30 20:51:28 +11:00
Colin Hebert f5074cd521 Add the trim() interpolation function 2016-01-30 10:28:04 +11:00
José F. Romaniello c8795b8565 Add signum interpolation function
This function returns -1 for negative numbers, 0 for 0 and 1 for positive numbers.

Useful when you need to set a value for the first resource and a different value for the rest of the resources.

Example: `${element(split(",", var.r53_failover_policy), signum(count.index))}`
2016-01-27 12:49:52 -03:00
Paul Hinze 0b11ace9ac Merge pull request #4788 from hashicorp/phinze/skip-remote-test-option
tests: allow opt-out of remote tests via env var
2016-01-25 10:57:08 -06:00
James Nugent cb6cb8b96a core: Support explicit variable type declaration
This commit adds support for declaring variable types in Terraform
configuration. Historically, the type has been inferred from the default
value, defaulting to string if no default was supplied. This has caused
users to devise workarounds if they wanted to declare a map but provide
values from a .tfvars file (for example).

The new syntax adds the "type" key to variable blocks:

```
variable "i_am_a_string" {
    type = "string"
}

variable "i_am_a_map" {
    type = "map"
}
```

This commit does _not_ extend the type system to include bools, integers
or floats - the only two types available are maps and strings.

Validation is performed if a default value is provided in order to
ensure that the default value type matches the declared type.

In the case that a type is not declared, the old logic is used for
determining the type. This allows backwards compatiblity with previous
Terraform configuration.
2016-01-24 11:40:02 -06:00
Paul Hinze 6bafa74011 tests: allow opt-out of remote tests via env var
Adds the `TF_SKIP_REMOTE_TESTS` env var to be used in cases where the
`http.Get()` smoke test passes but the network is not able to service
the needs of the tests.

Fixes #4421
2016-01-21 15:44:18 -06:00
James Nugent 5c16b47330 Merge pull request #4765 from hashicorp/f-docs-operators
docs: Add operators for interpolation functions
2016-01-20 17:09:45 -05:00
James Nugent efe27f3eae docs: Add operators for interpolation functions 2016-01-20 16:28:07 -05:00
Paul Hinze e67fc0fe9b command: Change module-depth default to -1
This means that terraform commands like `plan`, `apply`, `show`, and
`graph` will expand all modules by default.

While modules-as-black-boxes is still very true in the conceptual design
of modules, feedback on this behavior has consistently suggested that
users would prefer to see more verbose output by default.

The `-module-depth` flag and env var are retained to allow output to be
optionally limited / summarized by these commands.
2016-01-20 13:58:02 -06:00
Matt Moyer c17a6ceb2a Add a sha256(...) interpolation function. 2016-01-16 23:54:04 +00:00
Seth Vargo 8dbc43639d Use HTTPS + www. for links 2016-01-14 16:03:26 -05:00
William Holroyd 7b962006fb Update interpolation.html.md
Small changes to case on interpolation syntaxes, dealing with case.
2016-01-10 22:39:20 -05:00
Joseph Kordish 21fe576cb5 added the function to the docs 2016-01-06 15:19:54 -06:00
clint shryock c94b7c4584 provider/aws: Update docs with t1 instance for accounts with EC2 Classic 2015-12-21 10:00:34 -06:00
clint shryock 6236e8d720 Update doc to use valid AMI and t2.micro instance types 2015-12-15 15:58:28 -06:00
Paul Hinze bd23ab35bf docs: update template_file examples
Use the new non-deprecated style.

refs #4025
2015-11-24 09:01:11 -06:00
Matt Morrison 6ecec7fe83 Add coalesce func 2015-11-08 19:34:56 +13:00
f440 983e07cc17 docs: Correct logging option example
ref. 0090c063e8
2015-10-29 18:56:40 +09:00
Martin Atkins ef161e1c1b Various interpolation functions for CIDR range manipulation.
These new functions allow Terraform to be used for network address space
planning tasks, and make it easier to produce reusable modules that
contain or depend on network infrastructure.

For example:
- cidrsubnet allows an aws_subnet to derive its
  CIDR prefix from its parent aws_vpc.
- cidrhost allows a fixed IP address for a resource to be assigned within
  an address range defined elsewhere.
- cidrnetmask provides the dotted-decimal form of a prefix length that is
  accepted by some systems such as routing tables and static network
  interface configuration files.

The bulk of the work here is done by an external library I authored called
go-cidr. It is MIT licensed and was implemented primarily for the purpose
of using it within Terraform. It has its own unit tests and so the unit
tests within this change focus on simple success cases and on the correct
handling of the various error cases.
2015-10-22 08:10:52 -07:00
Matt Morrison cccc5d03e3 Add lower / upper interpolation functions 2015-10-21 08:16:24 -07:00
Rob Zienert a1939e70f7 Adding ignore_changes lifecycle meta property 2015-10-14 16:34:27 -05:00
Anthony Stanton b62833e7b8 Add documentation for compact() 2015-10-11 16:47:48 +02:00
Martin Atkins 3e9e96286a Document that heredoc syntax is supported.
Previously the only "documentation" I could find about this was a pull
request in the HCL repository.
2015-10-05 09:38:52 -07:00
Martin Atkins 0b85d35e87 Rename base64enc/dec to encode/decode.
There isn't any precedent for abbreviating words in the interpolation
function names, and it may not be clear to all users what "enc" and "dec"
are short for, so instead we'll prefer to spell out the whole words for
improved readability.
2015-10-03 15:12:51 -07:00
Martin Atkins c3d15a2336 Docs for base64 interpolation functions. 2015-10-03 14:49:50 -07:00
Paul Hinze cdcef1c852 Merge pull request #2704 from thegedge/add-index-function
Add a function to find the index of an element in a list.
2015-08-12 17:07:49 -05:00
Clint c5e8da2925 Merge pull request #2601 from nathanielks/feature/docs-environment-variables
Added page documenting useful Environment Variables
2015-08-12 13:54:55 -05:00
Clint d74ea5d472 Merge pull request #2933 from hashicorp/docs-math-interpolation
More details about math in interpolation
2015-08-12 13:49:58 -05:00
Clint Shryock 13e50e684c Document that create_before_destroy cannot depend on resources that are not also create_before_destroy 2015-08-05 11:59:08 -05:00
Cameron Stokes 30d57bf1ec 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.
2015-08-04 11:09:43 -07:00
Paul Hinze 2cea7c7d0c docs: clarify template_file path information
- change example to use the most commonly necessary path format w/
   `path.module`
 - link to path variable page in description

/cc @KFishner
2015-07-31 11:44:07 -05:00
Jason Gedge cf5926ddad Add a function to find the index of an element in a list. 2015-07-13 14:11:30 -04:00
Patrick Lee 80af6825fb changed combine() to concat() in docs
The example of the concat() function uses combine() instead of concat().
2015-07-09 17:04:36 -06:00
Nathaniel Schweinberg c29b4a9edd adding more verbose description to Environment Variables page, explained TF_LOG more 2015-07-02 13:49:57 -05:00
Nathaniel Schweinberg 382cad03c2 Added page documenting useful Environment Variables 2015-07-01 21:38:25 -05:00