しみゆーメモ

C#,JavaScript,Azureなど

Azure App Service プランを作成すると、OSがWindowsになってしまう

概要

最近、Azure App Serviceを可用性ゾーンにデプロイすることができるようになった(ゾーン冗長)。これで、アプリケーションを別々のゾーンに分散できるようになり、リージョンを別にするよりも手軽に可用性向上ができるようになる。

このゾーン冗長を利用するべく、App Service Planを作成した。

docs.microsoft.com

App Serviceの可用性ゾーンを使用する際の制約など

このゾーン冗長の設定は、2022年1月の段階で

  • App Service プランを作成するときのみ設定できる
  • 既存のApp Service プランにゾーン冗長を追加することができない
  • Azure Portalから設定できない(ARMテンプレートを使用する必要あり)

などの制約がある。

ARM テンプレートでApp Service プランを作成する

テンプレートの内容

{
  "$schema": "http://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "hostingPlanName": {
      "type": "string"
    },
    "sku": {
      "type": "string"
    },
    "skuCode": {
      "type": "string"
    },
    "numberOfWorkers": {
      "type": "string"
    }
  },
  "resources": [
    {
      "apiVersion": "2020-12-01",
      "name": "[parameters('hostingPlanName')]",
      "type": "Microsoft.Web/serverfarms",
      "location": "[resourceGroup().location]",
      "kind": "linux",
      "properties": {
        "zoneRedundant": true,
        // これがtrueだとlinux / falseだとwindows
        "reserved": true,
      },
      "sku": {
        "tier": "[parameters('sku')]",
        "name": "[parameters('skuCode')]",
        "capacity": "[parameters('numberOfWorkers')]"
      }
    }
  ]
}

手順

  • Azure portalの[カスタム テンプレートからのデプロイ]
  • [作成]を選択
  • [エディターで独自のテンプレートを作成する]を選択
  • 表示されたエディタにARMテンプレートをコピぺ
  • [インスタンスの詳細]を埋める
    • ARMテンプレートのparametersの中で指定した項目が表示される(skuやskuCodeなど)
  • デプロイ

これで、このApp Service プランに登録するApp Serviceを複数のゾーンに分散することができる(Zone redundantがtrueになっているはず)。

なお、Linux App Service プランを使用したい場合は、

  • kindlinux
  • properties.reservedtrue

にする必要がある。

詰まったこと

"properties": {
  "reserved": true,
},

が抜けていた。

kindをlinuxにして、properties.reservedfalseにすると、Linuxプランなのに、OSがWindowsになるというなんとも気持ち悪い状態になってしまった。

パッと見で、reservedがLinuxかどうかを指定するプロパティに見えなかったので、悩んだ。

結局、答えはドキュメントに書いてあった。

properties.reserved boolean Linux app service プランの場合は true 、 false それ以外の場合はです。

docs.microsoft.com

参考にさせていただいたサイト

blog.shibayan.jp

docs.microsoft.com