terraform/backend
Martin Atkins 10bf4c763b backend: Undeclared variables in -var-file is a warning, not an error
In Terraform 0.11 and earlier we just silently ignored undeclared
variables in -var-file and the automatically-loaded .tfvars files. This
was a bad user experience for anyone who made a typo in a variable name
and got no feedback about it, so we made this an error for 0.12.

However, several users are now relying on the silent-ignore behavior for
automation scenarios where they pass the same .tfvars file to all
configurations in their organization and expect Terraform to ignore any
settings that are not relevant to a specific configuration. We never
intentionally supported that, but we don't want to immediately break that
workflow during 0.12 upgrade.

As a compromise, then, we'll make this a warning for v0.12.0 that contains
a deprecation notice suggesting to move to using environment variables
for this "cross-configuration variables" use-case. We don't produce errors
for undeclared variables in environment variables, even though that
potentially causes the same UX annoyance as ignoring them in vars files,
because environment variables are assumed to live in the user's session
and this it would be very inconvenient to have to unset such variables
when moving between directories. Their "ambientness" makes them a better
fit for these automatically-assigned general variable values that may or
may not be used by a particular configuration.

This can revert to being an error in a future major release, after users
have had the opportunity to migrate their automation solutions over to
use environment variables.

We don't seem to have any tests covering this specific situation right
now. That isn't ideal, but this change is so straightforward that it would
be relatively expensive to build new targeted test cases for it and so
I instead just hand-tested that it is indeed now producing a warning where
we were previously producing an error. Hopefully if there is any more
substantial work done on this codepath in future that will be our prompt
to add some unit tests for this.
2019-01-22 07:46:51 -08:00
..
atlas Make the Atlas backend work after updating depencies 2018-11-15 20:34:31 +01:00
init Change how to fall back from remote to local backend 2018-11-20 22:25:52 +01:00
local Move module install functionality over to internal/initwd 2019-01-14 11:33:21 -08:00
remote backend/remote: fix a small typo 2019-01-18 19:40:57 +01:00
remote-state backend/s3: Configure AWS Client MaxRetries and provide enhanced S3 NoSuchBucket error message 2019-01-09 13:01:37 -05:00
backend.go Implement the remote enhanced backend 2018-11-06 16:29:46 +01:00
cli.go backend: Update interface and implementations for new config loader 2018-10-16 18:39:12 -07:00
nil.go terraform: Ugly huge change to weave in new State and Plan types 2018-10-16 19:11:09 -07:00
nil_test.go backend: introduce the backend set of interfaces 2017-01-26 14:33:49 -08:00
operation_type.go backend: introduce the backend set of interfaces 2017-01-26 14:33:49 -08:00
operationtype_string.go Update various files for new version of "stringer" 2017-12-11 13:26:29 -08:00
testing.go Implement the remote enhanced backend 2018-11-06 16:29:46 +01:00
unparsed_value.go backend: Undeclared variables in -var-file is a warning, not an error 2019-01-22 07:46:51 -08:00