Search code examples
azureazure-web-app-serviceazure-resource-managerazure-powershellazure-cli

How to create a Linux AppService Plan with New-AzAppServicePlan?


What is the equivalient of this code using New-AzAppServicePlan?

    az appservice plan create --resource-group $ServerFarmResourceGroupName `
        --name $AppServicePlanName `
        --is-linux `
        --location $ResourceGroupLocation `
        --sku $AppServicePlanTier `
        --number-of-workers $NumberOfWorkers

Is there really no way to create an App Service Plan using Az Powershell? Why can it only be done via Azure CLI or ARM?

I only found this answer, which basically uses ARM directly: How do I use Powershell to create an Azure Web App that runs on Linux?


Solution

  • I originally used my script to create a ConsumptionPlan (Y1) through PowerShell and AzureCLI because I don't like when Azure put a generated name when creating a ConsumptionPlan.

    Please find my solution to create a Linux App Service Plan (B1) using New-AzResource:

    $fullObject = @{
       location = "West Europe"
       sku = @{
            name = "B1"
            tier = "Basic"
       }
       kind = "linux"
       properties = @{
            reserved = $true
       }
    }
    
    $resourceGroupName = "rg-AppServicePlanLinux"
    $serverFarmName = "aspl-test"
    
    Write-Host "Step 1: CREATING APP SERVICE PLAN B1:Basic named [$serverFarmName]"
    # Create a server farm which will host the function app in the resource group specified
    New-AzResource -ResourceGroupName $resourceGroupName -ResourceType "Microsoft.Web/serverfarms" -Name $serverFarmName -IsFullObject -PropertyObject $fullObject -Force
    

    So I used the ARM template to understand which information you need to provide on the -PropertyObject parameter

    It also now seems possible to do an App Service Plan Linux with New-AzAppServicePlan command since Az PowerShell 4.3.0 (June 2020) with the parameter -Linux

    Az.Websites

  • Added safeguard to delete created webapp if restore failed in 'Restore-AzDeletedWebApp'
  • Added 'SourceWebApp.Location' for 'New-AzWebApp' and 'New-AzWebAppSlot'
  • Fixed bug that prevented changing Container settings in 'Set-AzWebApp' and 'Set-AzWebAppSlot'
  • Fixed bug to get SiteConfig when -Name is not given for Get-AzWebApp
  • Added a support to create ASP for Linux Apps
  • Added exceptions for clone across resource groups
  • Release Note: https://learn.microsoft.com/en-us/powershell/azure/release-notes-azureps?view=azps-5.6.0&viewFallbackFrom=azps-4.3.0#azwebsites-7

    New-AzAppServicePlan: https://learn.microsoft.com/en-us/powershell/module/az.websites/new-azappserviceplan?view=azps-5.6.0

    If you get "The Service is unavailable" after deploying your new Function app (Consumption Plan) with Azure CLI, please make sure the following statement from Microsoft: https://github.com/Azure/Azure-Functions/wiki/Creating-Function-Apps-in-an-existing-Resource-Group I waste the whole day because I got another Function App (Premium Plan) in the same resource group I used to deploy the Consumption one.