5 ms·
Amen! I found it excruciating that the language was always a few simple steps away from being homomorphic to JSON. I desperately needed to be able to manipulate
by thanatos519 5y ago
Amen! I found it excruciating that the language was always a few simple steps away from being homomorphic to JSON. I desperately needed to be able to manipulate it as data structures, not as strings. All of the ways I found to work around its limitations made me wish for something else entirely.
- Znafon 5y agoYou can use JSON for your configuration: https://www.terraform.io/docs/language/syntax/json.html https://www.terraform.io/docs/language/syntax/json.html !
- cube2222 5y agoYou can write Terraform using JSON if you want to: https://www.terraform.io/docs/language/syntax/json.html https://www.terraform.io/docs/language/syntax/json.html Or do you mean something deeper?
- thanatos519 5y agoI mean being able to reliably convert HCL↔JSON.
- rad_gruchalski 5y agoIt's a language for a reason, there's a grammar, parser, lexer, ast. What's the problem?
- garettmd 5y agoHave you used it since they introduced HCL2? It supports other data structures much better than it used to. Maps, lists, sets, etc. are much easier to work with.
- throwaway894345 5y agoStill a far cry away from a proper programming language, which is what we need. For example, if you want to loop over some config and generate a resource for each config, but the resources need different providers (e.g., different AWS accounts) then you just can't do it. Further, if you just want a little function, you have to build a fully fledged module. Then there are the crazy namespaces (`var`, `local`, `resource`, `module`, etc).
- clipradiowallet 5y agoYes you can... assuming your config is a map, include a key for "provider", and set it appropriately. EG in your example for multiple AWS accounts, define providers aliased as `aws.account1`, `aws.account2`, and so on. Reference those provider aliases in your map you are iterating through, and set the provider to that value.
- throwaway894345 5y agoI'm 99% sure that will fail with an error because "provider" can't be set dynamically. See this issue, for example: https://github.com/hashicorp/terraform/issues/24476 https://github.com/hashicorp/terraform/issues/24476