Comments (1)
Thanks for taking the time to explain your issue @ottramst.
This is a known (but not well documented) limitation. Globals today are always about fully evaluated information, there is no partial evaluation on them, given that they can't hold arbitrary un-evaluated expressions as their final value. The problem is not related to ternary, even this simple example will fail with a similar error:
globals {
data = tm_hcl_expression("expr")
}
generate_hcl "test.tf" {
content {
data = global.data
}
}
We will be reviewing globals behavior soon, but for now I will only document better the contexts where tm_hcl_expression can be used safely. We should also remove the function from the global evaluation context, so you are going to get a much nicer "function doesn't exist" error than the not so friendly panic.
Given the provided example, if it is similar to what you are trying to achieve, this should work:
globals {
module_rds_enabled = true
database = global.module_rds_enabled ? "module.rds.db_instance_database_name" : "module.rds_aurora.cluster_database_name"
}
generate_hcl "_test.tf" {
content {
database = tm_hcl_expression(global.database)
}
}
stack {
name = "test-stack"
}
from terramate.
Related Issues (20)
- [BUG] runtime removes all characters from env value after `=` HOT 1
- [FEATURE] Automatically generate files if `auto_gen_code` is set to `true` HOT 2
- [FEATURE] provide a helper function to load simple HCL files like .tfvars HOT 1
- [BUG] Cloning does not consider files located outside of stacks
- [BUG] Version constraint check is not working properly HOT 2
- [FEATURE] generate_hcl with dynamic name / multiple times
- [FEATURE] Add outputs to stacks so they can be used without remote state HOT 3
- [BUG] `terramate install-completions` on fish tries to complete with descriptions and whitespace HOT 1
- [FEATURE] Support global tags in stacks HOT 3
- [FEATURE] Support for Terraform functions HOT 1
- [FEATURE] GPG Sign RPM and DEB packages HOT 2
- [BUG] root config found outside root dir HOT 3
- [BUG] `terramate create --all-terragrunt` error with nested stacks HOT 7
- [BUG] `required_version` validation error HOT 2
- [FEATURE] Use Clone feature to overwrite stacks, but keeping stack IDs. HOT 4
- [BUG] "watch" files HOT 5
- [FEATURE] Support in tm functions tm_tomlencode / tm_tomldecode
- [BUG] reference from tm_hcl_expression in tm_format HOT 2
- [BUG] Terramate run becomes unresponsive when encountering errors HOT 4
- [FEATURE] Support environment variable configuration for CLI commands HOT 5
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 terramate.