Azure App Service (Web Apps) Plan

This page shows how to write Terraform and Azure Resource Manager for App Service (Web Apps) Plan and write them securely.

azurerm_app_service_plan (Terraform)

The Plan in App Service (Web Apps) can be configured in Terraform with the resource name azurerm_app_service_plan. The following sections describe 10 examples of how to use the resource and its parameters.

Example Usage from GitHub

app_service_plan_test.tf#L11
resource "azurerm_app_service_plan" "standard_s1" {
  name                = "api-appserviceplan-pro"
  location            = azurerm_resource_group.example.location
  resource_group_name = azurerm_resource_group.example.name
  kind                = "Windows"
  reserved            = false
app_service_plan.tf#L1
resource "azurerm_app_service_plan" "app_asp" {
  name                = format("%s-%s", var.app_rg_name, "asp")
  resource_group_name = var.app_rg_name
  location            = var.rg_location
  is_xenon            = false
  kind                = "linux"
app-service-plans.tf#L1
resource "azurerm_app_service_plan" "web-app" {
  name                = "WebAppServicePlan"
  location            = azurerm_resource_group.post-office-rg.location
  resource_group_name = azurerm_resource_group.post-office-rg.name
  kind                = "app"
  reserved            = true
main.tf#L43
resource "azurerm_app_service_plan" "app_service_plan_linux" {
  name                         = "bjdhosting-linux"
  resource_group_name          = data.azurerm_resource_group.ase.name
  location                     = data.azurerm_resource_group.ase.location
  kind                         = "Linux"
  reserved                     = true
app_service_plan_test.tf#L11
resource "azurerm_app_service_plan" "standard_s1" {
  name                = "api-appserviceplan-pro"
  location            = azurerm_resource_group.example.location
  resource_group_name = azurerm_resource_group.example.name
  kind                = "Windows"
  reserved            = false
azurerm_app_service_plan.tf#L1
resource "azurerm_app_service_plan" "primary_plan" {
  name                = "primary-plan"
  resource_group_name = azurerm_resource_group.resource_group.name
  location            = random_shuffle.regions-with-az.result[0]
  kind                = "functionapp"
  reserved            = true
main.tf#L6
resource "azurerm_app_service_plan" "cloudskillswebapp-plan" {
    name = "cloudskillswebapp-plan"
    location = var.location
    resource_group_name = var.RG

    sku {
plan.tf#L1
resource "azurerm_app_service_plan" "plan" {
  name                = "appserviceplan-linux"
  location            = var.location
  resource_group_name = basename(azurerm_resource_group.rg.id)
  kind                = "Linux"
  reserved            = true
appservice.tf#L1
resource "azurerm_app_service_plan" "poc" {
  name                = "api-appserviceplan"
  location            = var.resource-group-location
  resource_group_name = var.resource-group-name
  kind                = "Linux"
  reserved            = true
main.tf#L1
resource "azurerm_app_service_plan" "app_sp" {
  name = "myappserviceplan"
  resource_group_name = "myresourcegroup"
  sku {
    tier = "Standard"
    size = "S1"

Review your Terraform file for Azure best practices

Shisho Cloud, our free checker to make sure your Terraform configuration follows best practices, is available (beta).

Parameters

Explanation in Terraform Registry

Manages an App Service Plan component.

Tips: Best Practices for The Other Azure App Service (Web Apps) Resources

In addition to the azurerm_app_service, Azure App Service (Web Apps) has the other resources that should be configured for security reasons. Please check some examples of those resources and precautions.

risk-label

azurerm_app_service

Ensure your App Service is accessible via HTTPS only

It is better to configure the App Service to be accessible via HTTPS only. By default, both HTTP and HTTPS are available.

risk-label

azurerm_function_app

Ensure to enable authentication to prevent anonymous request being accepted

It is better to enable authentication to prevent anonymous requests and ensure all communications in the application are authenticated.

Review your Azure App Service (Web Apps) settings

In addition to the above, there are other security points you should be aware of making sure that your .tf files are protected in Shisho Cloud.

Microsoft.Web/serverfarms (Azure Resource Manager)

The serverfarms in Microsoft.Web can be configured in Azure Resource Manager with the resource name Microsoft.Web/serverfarms. The following sections describe how to use the resource and its parameters.

Example Usage from GitHub

AppServiceConfig.json#L4
            "resourceType": "Microsoft.Web/serverfarms",
            "sku": {
                "name": "F1",
                "tier": "Free"
            },
            "capacity": {
AppServiceConfig.json#L4
            "resourceType": "Microsoft.Web/serverfarms",
            "sku": {
                "name": "F1",
                "tier": "Free"
            },
            "capacity": {
AppServicePlanTemplate.json#L84
            "type": "Microsoft.Web/serverfarms",
            "location": "[parameters('aseLocation')]",
            "properties": {
                "name": "[parameters('CMappServicePlanName')]",
                "hostingEnvironmentProfile": {
                     "id": "[resourceId('Microsoft.Web/hostingEnvironments',parameters('appServiceEnvironmentName'))]"
w0.json#L50
            "type": "Microsoft.Web/serverfarms",
            "apiVersion": "2018-02-01",
            "name": "[parameters('serverfarms_chieuannhieusd001_name')]",
            "location": "West US",
            "sku": {
                "name": "P3v2",
e7.json#L50
            "type": "Microsoft.Web/serverfarms",
            "apiVersion": "2018-02-01",
            "name": "[parameters('serverfarms_chieuannhieusd071_name')]",
            "location": "East US",
            "sku": {
                "name": "P3v2",
e9.json#L50
            "type": "Microsoft.Web/serverfarms",
            "apiVersion": "2018-02-01",
            "name": "[parameters('serverfarms_chieuannhieusd091_name')]",
            "location": "East US",
            "sku": {
                "name": "P3v2",
e6.json#L50
            "type": "Microsoft.Web/serverfarms",
            "apiVersion": "2018-02-01",
            "name": "[parameters('serverfarms_chieuannhieusd061_name')]",
            "location": "East US",
            "sku": {
                "name": "P3v2",
e27.json#L50
            "type": "Microsoft.Web/serverfarms",
            "apiVersion": "2018-02-01",
            "name": "[parameters('serverfarms_chieuannhieusd071_name')]",
            "location": "East US 2",
            "sku": {
                "name": "P3v2",
w27.json#L50
            "type": "Microsoft.Web/serverfarms",
            "apiVersion": "2018-02-01",
            "name": "[parameters('serverfarms_chieuannhieusd071_name')]",
            "location": "West US 2",
            "sku": {
                "name": "P3v2",
w1.json#L50
            "type": "Microsoft.Web/serverfarms",
            "apiVersion": "2018-02-01",
            "name": "[parameters('serverfarms_chieuannhieusd011_name')]",
            "location": "West US",
            "sku": {
                "name": "P3v2",

Parameters

  • apiVersion required - string
  • extendedLocation optional
      • name optional - string

        Name of extended location.

  • kind optional - string

    Kind of resource.

  • location required - string

    Resource Location.

  • name required - string

    Name of the App Service plan.

  • properties required
      • elasticScaleEnabled optional - boolean

        ServerFarm supports ElasticScale. Apps in this plan will scale as if the ServerFarm was ElasticPremium sku

      • freeOfferExpirationTime optional - string

        The time when the server farm free offer expires.

      • hostingEnvironmentProfile optional
          • id optional - string

            Resource ID of the App Service Environment.

      • hyperV optional - boolean

        If Hyper-V container app service plan <code>true</code>, <code>false</code> otherwise.

      • isSpot optional - boolean

        If <code>true</code>, this App Service Plan owns spot instances.

      • isXenon optional - boolean

        Obsolete: If Hyper-V container app service plan <code>true</code>, <code>false</code> otherwise.

      • kubeEnvironmentProfile optional
          • id optional - string

            Resource ID of the Kubernetes Environment.

      • maximumElasticWorkerCount optional - integer

        Maximum number of total workers allowed for this ElasticScaleEnabled App Service Plan

      • perSiteScaling optional - boolean

        If <code>true</code>, apps assigned to this App Service plan can be scaled independently. If <code>false</code>, apps assigned to this App Service plan will scale to all instances of the plan.

      • reserved optional - boolean

        If Linux app service plan <code>true</code>, <code>false</code> otherwise.

      • spotExpirationTime optional - string

        The time when the server farm expires. Valid only if it is a spot server farm.

      • targetWorkerCount optional - integer

        Scaling worker count.

      • targetWorkerSizeId optional - integer

        Scaling worker size ID.

      • workerTierName optional - string

        Target worker tier assigned to the App Service plan.

      • zoneRedundant optional - boolean

        If <code>true</code>, this App Service Plan will perform availability zone balancing. If <code>false</code>, this App Service Plan will not perform availability zone balancing.

  • sku optional
      • capabilities optional array
          • name optional - string

            Name of the SKU capability.

          • reason optional - string

            Reason of the SKU capability.

          • value optional - string

            Value of the SKU capability.

      • capacity optional - integer

        Current number of instances assigned to the resource.

      • family optional - string

        Family code of the resource SKU.

      • locations optional - array

        Locations of the SKU.

      • name optional - string

        Name of the resource SKU.

      • size optional - string

        Size specifier of the resource SKU.

      • skuCapacity optional
          • default optional - integer

            Default number of workers for this App Service plan SKU.

          • elasticMaximum optional - integer

            Maximum number of Elastic workers for this App Service plan SKU.

          • maximum optional - integer

            Maximum number of workers for this App Service plan SKU.

          • minimum optional - integer

            Minimum number of workers for this App Service plan SKU.

          • scaleType optional - string

            Available scale configurations for an App Service plan.

      • tier optional - string

        Service tier of the resource SKU.

  • tags optional - string

    Resource tags.

  • type required - string

Frequently asked questions

What is Azure App Service (Web Apps) Plan?

Azure App Service (Web Apps) Plan is a resource for App Service (Web Apps) of Microsoft Azure. Settings can be wrote in Terraform.

Where can I find the example code for the Azure App Service (Web Apps) Plan?

For Terraform, the gilyas/infracost, DFE-Digital/claim-additional-payments-for-teaching-qts-api and iamprovidence/PostOffice source code examples are useful. See the Terraform Example section for further details.

For Azure Resource Manager, the brwilkinson/ADFL, brwilkinson/AzureDeploymentFramework and mangleshvyas/Sitecore9 source code examples are useful. See the Azure Resource Manager Example section for further details.