Use a DSL rather than JSON for authoring templates
Scrap the JSON thing and use a DSL with real language features for declaring the templates.
The syntax itself can be compressed and much easier to use. (for example defining a parameters or a variables without unnecessary syntactic sugar or properties in properties)
Replace concat with full expressions (and partly numeric ones for easier construction of names) and skip all the variable('xx') and parameter('ccc') and just use the names (xx, ccc) directly in expressions.
Replace the copy/copyIndex thing with a flexible iterator definition that allows you to use any sequence of values as input (custom number sequences, custom arrays etc)
Replace resourceid() with a simple reference to something in the template. (Why should the author bother about remembering the exact types of things?)
Full validation/compilation in VS (or some webtool), if a name is invalid I want to know that before half of my deploy completed...
Easy modularity for templates, both for reuse and for easier maintenance of large environments. (iusing/include or something like it)
Local variables within a resource or module.
The DSL compiler might well generate JSON that gets put into the ARM, but please don't force us to edit it.
Rahul Tamrkar commented
Hi guys i want some solution. I have tosca basd yaml file and now i want to create vm in azure using api. So my question is how i can send yaml file in azure rest api as it will supprt only json.
Thanks in advance,
seb brochet commented
I've also some issues with the current JSON-based language to describe ARM templates.
I've started to design some jinja2 macros to ease ARM templates creation.
You can have a look here: https://github.com/sebbrochet/azure-jinja2
And a taste on it in this project: https://github.com/sebbrochet/azure-docker-playground/blob/master/vm_creation/jinja2/includes/resources.json.j2
Let me know if you find it useful...
Ulf A @ CAB commented
Oh, and I forgot about comments...