Every once in a while, when working with ARM templates you come across something that is missing from the official Microsoft ARM template reference. In my case yesterday, I was looking to update the configuration of an Azure App Service to use the DotNetCore stack (rather than .NET 4.8).
While I initially thought this would be a quick job to simply look up the ARM reference and make the required changes, I found that there was nothing about DotNetCore in the ARM reference. Funny enough, there is a value for “netFrameworkVersion”, but don’t be deceived, if you are looking to setup DotNetCore – this value is not for you (this is for regular .Net only).
To better understand the problem, I Clickly Clikcy’d in an App Service and configured it for DotNetCore (Clickly Clicky is our lingo for deploying infrastructure using the portal rather than a CLI or template). With this, I attempted my usual trick of exporting a template and observing the JSON it spits out. However, much to my amazement I couldn’t see any reference to dotnetcore in there at all.
In the end it was the Azure Resource Explorer which came to my rescue. Used the tool to explore the example I created and found a value called “CURRENT_STACK” in the properties of the “Microsoft.Web/sites/config” resource type.
After playing this this for a while, I was able to translate this into my ARM template with the following JSON.
{
"type": "Microsoft.Web/sites",
"name": "[variables('WebSiteName')]",
"apiVersion": "2020-06-01",
"location": "[resourceGroup().location]",
"kind": "app",
"properties": {
"siteConfig": {
"metadata": [{
"name": "CURRENT_STACK",
"value": "dotnetcore"
}]
},
Hopefully this helps anyone who encounters this problem.
Cheers,
Joel