diff --git a/terraform/eval_output.go b/terraform/eval_output.go index a454efe94..657c70304 100644 --- a/terraform/eval_output.go +++ b/terraform/eval_output.go @@ -68,18 +68,22 @@ func (n *EvalWriteOutput) Eval(ctx EvalContext) (interface{}, error) { // handling the interpolation error if err != nil { - if n.ContinueOnErr { - log.Printf("[ERROR] Output interpolation %q failed: %s", n.Name, err) - // if we're continueing, make sure the output is included, and - // marked as unknown - mod.Outputs[n.Name] = &OutputState{ - Type: "string", - Value: config.UnknownVariableValue, + switch { + case featureOutputErrors: + if n.ContinueOnErr { + log.Printf("[ERROR] Output interpolation %q failed: %s", n.Name, err) + // if we're continueing, make sure the output is included, and + // marked as unknown + mod.Outputs[n.Name] = &OutputState{ + Type: "string", + Value: config.UnknownVariableValue, + } + return nil, EvalEarlyExitError{} } - return nil, EvalEarlyExitError{} + return nil, err + default: + log.Printf("[WARN] Output interpolation %q failed: %s", n.Name, err) } - - return nil, err } // Get the value from the config diff --git a/terraform/features.go b/terraform/features.go new file mode 100644 index 000000000..9bcf19d9c --- /dev/null +++ b/terraform/features.go @@ -0,0 +1,9 @@ +package terraform + +import ( + "os" +) + +// This file holds feature flags for the next release + +var featureOutputErrors = os.Getenv("TF_OUTPUT_ERRORS") != ""