I love the idea of IAC as actual code. Too many times I've looked at yet another over engineered templating engine and thought, why couldn't this just be code?
The reason for not doing a full programming language for that is that you can prove the infrastructure is finite with a simple template language, but you can’t if your template language can do conditional branching.
Or something like that. My CS-fu is admittedly weak.
OTOH, I think Lisp would be the perfect choice for IaC.
It's a valid point. Although I think most of these templating languages are probably Turing complete anyway. We should make better use of Turing limited languages.
I think reinventing the wheel every time a for loop is needed in a resource spec makes things unnecessarily tedious for everyone.
IIRC, Terraform was not Turing-complete at the start, but users demanded features and that’s how it ended.
The idea to start from a programming language is that, since you are going to end up Turing-complete anyway, at least you make sure you don’t end up with a programming language with an awkward syntax.
Or something like that. My CS-fu is admittedly weak.
OTOH, I think Lisp would be the perfect choice for IaC.