Terraform doesn’t yet natively have a method to set the “Stack” version of an Azure App Service to dot net Core.
This limitation is described in an issue against the AzureRm provider.
I’m not well versed in this area of Azure yet, but my understanding is that you can achieve dotnet core support by using the .NET stack, and then adding the .Net Core runtime extension:
I’m successfully running an ASP.NET Blazor app on dotnet Core 3.1, deployed through Terraform, in this manner.
However this means your app services is loading up the dotnet 4 runtime, AND the dotnet core runtime as an extension, which will have a small impact on the memory footprint.
In order to get the Stack set on dotnet Core without having to set it manually, we can use an ARM template deployment within Terraform. This was originally sourced from this stackoverflow answer.
Here’s my example on GitHub, rather than embedding code inline (it’s a little long):
GitHub Example: AppService-DotNetCore.tf
This set of code deploys the app service plan and app service (as the free tier), and then an ARM template deployment which sets the Stack as .NET Core, as well as adding an extension for the .NET Core logging.
Here’s my Blazor app, running on .NET Core stack!