Comments (6)
Hi @phreddrick,
We'll investigate the weird issue here... it looks like the %
is escaping the ${
in a similar way that $${
would work, as a side effect of the new 2.0.0 feature allowing %{...}
sequences that can themselves be escaped as %%{...}
. That is, I think the escape handling is incorrectly permitting mixtures of %
and $
rather than requiring two consecutive identical characters.
In the mean time, if you do not wish to pin your provider version back to 1.0.0 I think you can work around this by including the percent sign in the expression somehow. For example:
${join("", ["%", metagroup])} ALL=(ALL:ALL) ALL
from terraform-provider-template.
Thanks for the workaround. It didn't occur to me to use one of the builtin functions like that.
from terraform-provider-template.
Turns out the work-around doesn't work for terraform 0.11.11. I get:
data.template_file.sudoers: Refreshing state...
Error: Error refreshing state: 1 error(s) occurred:
* data.template_file.sudoers: 1 error(s) occurred:
* data.template_file.sudoers: data.template_file.sudoers: failed to render : <template_file>:3,1-1: Invalid character; This character is not used within the language., and 1 other diagnostic(s)
when I use the example you gave above.
from terraform-provider-template.
So the following workaround worked for me with both 1.0.0 and 2.0.0:
send in "%" as a variable called percent, then the template file looks like:
# Give ${metagroup} sudo access
${join("", list(percent, metagroup))} ALL=(ALL:ALL) ALL
from terraform-provider-template.
Sorry, yes, the workaround I suggested was intended for provider 2.0.0. Provider 1.0.0 shouldn't need a workaround at all because it doesn't yet have the %{...}
control sequence syntax that led to this parser bug.
However, if you wish to write configuration that works for both, the list(...)
function is a good way to do that, since it's supported as an alias of [ ... ]
for backward-compatibility.
from terraform-provider-template.
yeah, I have to support both plugin's at the moment. At any rate, the big surprise to me was that I couldn't have the literal string "%" in the join, I had to pass it in as a variable
from terraform-provider-template.
Related Issues (20)
- Template 2.0.0 tries to interpulate percent (%) signs followed by curly-braces {} HOT 3
- Breaking change in substitution in v2.0.0 HOT 1
- Extremely unprofessional backward incompatible release HOT 1
- Make Terraform validate template_file on plan phase
- Feature request: Render variables in filenames in template_dir
- Template provider - Better error message at template parsing HOT 2
- Terraform template creating the wrong type of numbers HOT 5
- template_dir doesn't work on Terraform v0.12.4 HOT 2
- template_dir doesn't skip hidden files HOT 1
- [regression] provider-template fails rendering when template file has % in the content starting from v2.0.0 HOT 3
- go module uses invalid version HOT 4
- Passing Lists as Template Variables HOT 2
- template_dir can't handle subdirectories correctly on windows: open <filename>: The system cannot find the path specified.
- depends_on should wait for template_dir generation HOT 3
- Provider cannot be migrated to terraform-plugin-sdk as it uses `lang` pkg directly
- Terragrunt panic due to api body size. HOT 2
- Unsupported functions in template file HOT 1
- Changes from nearly a year ago not published
- Provider archived
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from terraform-provider-template.