By now you are familiar with ARM templates and the process of writing and deploying them. And hopefully you are impressed with the opportunities that IaC and ARM templates, in particular, give you.
Still, you may have noticed that describing more extensive infrastructure this way is not perfect. It is generally accepted that ARM templates have several drawbacks, mainly because they are written in JSON. These are some examples:
- The JSON notation forces you to group all parameters, variables, and resources into three sections, while it might make much more sense to mix them up and order them not by type but in a way that makes sense for the human reader of the template.
- ARM templates require you to enter expression syntax ([...]) for invoking functions, which is a nuisance and makes templates harder to read.
- Having to conform to the JSON specification makes it impossible to introduce more powerful syntax for string interpolation and the usage of parameters and variables without using the parameters(...) and variables(...) functions.