The Issue
When using Terraform to perform an action, and the input is using a $, you can end up with an output such as the below.
│ Error: Invalid character │ │ on main.tf line 104, in resource "vra_blueprint" "this": │ 104: network: '${resource.Cloud_Network_1.id}' │ │ This character is not used within the language.
This happened to me when I was using the Terraform vRA Provider to create Cloud Templates (blueprints) in my vRA environment. The vRA cloud templates use a syntax such as ${input.something}, which clashes with the syntax used by Terraform to identify inputs.
The Cause
Terraform implements a interpolations syntax. These interpolations are wrapped in ${}
, such as ${var.foo}
.
The interpolation syntax is powerful and allows you to reference variables, attributes of resources, call functions, etc.
The Fix
You can escape interpolation with double dollar signs: $${foo}
will be rendered as a literal ${foo}
.
Regards