Declarative languages failure
Approach that in my eyes failed, again and again, is to start with your own declarative language and then with time grow the language. (SQL being among notable exceptions)
Ansible’s loop looks bad as the whole idea of making top levels of programs in YAML based syntax (and the rest in Python).
In my opinion, it makes more sense to create a language first and then libraries for it, not a library and then a language around it.
My hope for Terraform
I think Terraform guys are smart. Among other things, it manifests in implementing data sources. Data sources make Terraform much more flexible. I think it’s very clever.
Terraform, which started declarative, are now inventing their own programming language. They are going the way of Puppet and Ansible. I hope they can do better, in this awkward situation: there are quite a lot of constraints on the programming language because of the existing syntax and semantics.
Happy coding, everyone!