Azure / azure-resource-manager-schemas

Schemas used to author and validate Resource Manager Templates. These schemas power the intellisense and syntax completion in our ARM Tools VSCode extension, as well as the Export Template API
MIT License
610 stars 517 forks source link

[Enhancement Request] Expand Metadata to work like in Azure Policy #1017

Closed JHStarner closed 4 years ago

JHStarner commented 4 years ago

Concerning deploymentTemplate.json.

Any possible way the metadata tag in parameters could make use of the strongType attribute available in Azure Policy? This would allow for a drop-down in GUI deployment based on available values.

Best Use-Case: When deploying a VM with ARM, the metadata strongType would create a drop-down list for available SKUs. I know I can make an allowedValues list in the parameter section. However, it would be nice to not have to manage that list by hand. It would be nice to just pull a list, same as I would under Policy.

alex-frankel commented 4 years ago

We do want to support a "strongType" equivalent for ARM templates. We are going to be releasing a new capability called Template Specs which will allow you to bundle a createUiDefinition file, which has a lot of functionality for creating a good UX for deploying an ARM template. We're a bit scant on details atm, but we will have more to share about template specs in the next 1-2 months. We just discussed it for the first time at //build last week: https://www.youtube.com/watch?v=UaVCNpD3pvg

We are going to close this issue as it is not directly related to ARM schemas, but please let us know if you supporting createUiDefinition files will solve this problem for you.

@anthony-c-martin - can you close this?

JHStarner commented 4 years ago

I am not sure how the createUiDefinition will accomplish the same thing as pulling vmSKUs from the metadata -> strongType capability found in Azure Policy.

I don't think this is something that I need to create a net-new interface for. I just need to stream-line the Templates blade's inputs for infrastructure personnel, which is a small team.

Seeing as I cannot find a repo for how Azure-Policy works behind the scenes, I cannot point to what code they are using for strongType. Is this part of the issue? It is a more complex mechanism in AzPolicy that is not addable to the ARM schema? Is this something that needs to be directed to the team that handles the ARM deployment engine? If this is not something expanded or added in the schema, where do I direct requests like these? Because we're still missing a simple Switch/Case functionality in ARM as well. We can only do multiple nested ifs which get as spaghettied as Office Excel. Who is the proper team to ask for expanded functions and functionality in the ARM language itself?

alex-frankel commented 4 years ago

createUiDefinition supports elements that will dynamically load lists like VM SKUs: https://docs.microsoft.com/en-us/azure/azure-resource-manager/managed-applications/microsoft-compute-sizeselector

It's similar to what AzurePolicy does, but this is more feature rich. That being said, it's a separate file that needs to be authored and maintained, and the declaration is more verbose. We would like to support strongType just like policy, but I don't have an ETA for when that might happen.

Frankly, there is no good place to provide this feedback today. You can put something in UserVoice if you would like.

We are working on a language revision for ARM Templates which will be open sourced, but this has not been released yet. That will be the right place to provide feature asks like case/switch statements and strongType support. We should have more to share in the next 2-3 months and you can sign up for updates here: https://aka.ms/armLangUpdates. We discussed this language revision for the first time at //build last week (session is here).

JHStarner commented 4 years ago

Thanks for that. I did submit for the ArmLangUpdates.

I'll look more into the managed-applications section and see if it is something worth fleshing out for our team, or I just wait for the new language features.

Thanks again