Azure App Service プランを作成すると、OSがWindowsになってしまう
概要
最近、Azure App Serviceを可用性ゾーンにデプロイすることができるようになった(ゾーン冗長)。これで、アプリケーションを別々のゾーンに分散できるようになり、リージョンを別にするよりも手軽に可用性向上ができるようになる。
このゾーン冗長を利用するべく、App Service Planを作成した。
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 プランを使用したい場合は、
- kindをlinuxに
- properties.reservedをtrue
にする必要がある。
詰まったこと
"properties": { "reserved": true, },
が抜けていた。
kindをlinuxにして、properties.reservedをfalseにすると、Linuxプランなのに、OSがWindowsになるというなんとも気持ち悪い状態になってしまった。
パッと見で、reservedがLinuxかどうかを指定するプロパティに見えなかったので、悩んだ。
結局、答えはドキュメントに書いてあった。
properties.reserved boolean Linux app service プランの場合は true 、 false それ以外の場合はです。