You have complex enough logic to warrant a language, you should use a real language. You'll have more support, less obscure issues, a solid standard library and whatever else you want, because it's a REAL language.
If the argument is "someone in my team uses recursion to write the YAML files, so I'll disallow it", then the issue is not with the language, it's with the team.
What I have found on my career is that many Ops people sell themselves short and hesitate to dive into learning and fully using an actual language. I've yet to understand why, but I've seen it multiple times.
They then end up using pseudo-languages in configuration files to avoid this small step towards using an actual language, and then complain about how awful those pseudo-languages are.
> You have complex enough logic to warrant a language, you should use a real language.
Not sure what you mean. Dhall is a real language:
Dhall is not a Turing-complete programming language,
which is why Dhall’s type system can provide safety
guarantees on par with non-programmable configuration
file formats. Specifically, Dhall is a “total”
functional programming language, which means that:
You can always type-check an expression in a finite
amount of time
If an expression type-checks then evaluating that
expression always succeeds in a finite amount of time