Azure / bicep

Bicep is a declarative language for describing and deploying Azure resources
MIT License
3.23k stars 748 forks source link

Guiding customers to modern defaults #4398

Open pakrym opened 3 years ago

pakrym commented 3 years ago

As services develop and evolve, they gather various switches to enable the "modern" behavior.

For example:

resource workerFunctionSite 'Microsoft.Web/sites@2021-01-15' = {
  kind: 'functionapp'
}

or

resource storageacc 'Microsoft.Storage/storageAccounts@2021-04-01' = {
  kind: 'StorageV2'
}

Portal can automatically default these switches to their latest value or hide them in some other way. These create an extra barrier for entry for customers getting started with IaC as they need to discover correct values and carry them forever.

One possible solution to this is analyzers that would point to modern defaults, another, pointed out by @anthony-c-martin, is a module registry where defaults would be encapsulated in modules.

alex-frankel commented 3 years ago

We can likely do a lot of these with new linter rules, but it would also be interesting to see if any of this can be expressed in the RP swaggers, so that RPs have control over this type of behavior.

Also would be cool if external user's can contribute to this "knowledge base"