nakamurakko’s diary

仕事で覚えたこと、勉強したことを自分のメモ代わりに書いていこうかなと。

Azure DevOps その2 Webアプリテンプレートの修正

Azure DevOpsで用意されたApp Serviceは、プランが「S1」に設定されていて、個人で毎月支払うには使うにはまぁまぁ高めのプランになっている。 費用を抑えたいので変更する。

前提

  • Azure DevOpsのプロジェクトを作成済み

container-webapp-template.jsonの確認

DevOpsのプロジェクトを作成してソースを確認すると、container-webapp-template.jsonが用意されていて、その中でWebアプリのプラン(App Service Plan)は下記のように定義されていた。

{
    "type": "Microsoft.Web/serverfarms",
    "sku": {
        "Tier": "[first(skip(split(parameters('sku'), ' '), 1))]",
        "Name": "[first(split(parameters('sku'), ' '))]"
    },
    "kind": "linux",
    "name": "[parameters('hostingPlanName')]",
    "apiVersion": "2016-09-01",
    "location": "[resourceGroup().location]",
    "properties": {
        "name": "[parameters('hostingPlanName')]",
        "workerSizeId": "0",
        "reserved": true,
        "numberOfWorkers": "1",
        "hostingEnvironment": ""
    }
},

skuNameTierの部分が主にWebアプリのプランの価格レベルで、それに指定されたパラメーターはcontainer-webapp-template.jsonの先頭に、

"sku": {
    "defaultValue": "Standard",
    "type": "String"
},

と定義されていた。

Webアプリテンプレートの修正

であれば、価格レベルのパラメーターを修正すればいいのかと思い、

"sku": {
    "defaultValue": "B1 Basic",
    "type": "String"
},

のように修正してビルドしてみたけど、価格レベルが変わらなかったので、実際の価格レベルの定義を参考にしてみた。

「対象のプランを選択」 → 「テンプレートのエクスポート」を選択する。

f:id:nakamurakko:20200113115353p:plain

skuには5つ設定がありますな。その内容をcontainer-webapp-template.jsonに上書きした。 ついでにapiVersionの最新化と、propertiesも過不足があるので、上書きしてみた結果が下記の通り。

{
    "type": "Microsoft.Web/serverfarms",
    "apiVersion": "2018-02-01",
    "name": "[parameters('hostingPlanName')]",
    "location": "[resourceGroup().location]",
    "sku": {
        "name": "B1",
        "tier": "Basic",
        "size": "B1",
        "family": "B",
        "capacity": 1
    },
    "kind": "linux",
    "properties": {
        "perSiteScaling": false,
        "maximumElasticWorkerCount": 1,
        "isSpot": false,
        "reserved": true,
        "isXenon": false,
        "hyperV": false,
        "targetWorkerCount": 0,
        "targetWorkerSizeId": 0
    }
},

この状態でビルドしてみるとWebアプリのプラン価格レベルが「S1(現時点で約9,000円)」から「B1(現時点で約1,500円)」に変更されている事を確認できた。 価格レベルを「F1(無料)」に変更することも可能だけど、今回はカスタムドメインを使用できる最低価格レベルの「B1」を選択した。

参考

container-webapp-template.jsonはDevOpsプロジェクト作成直後はapiVersionが古かったり、間違っていたりするので、Define resources in Azure Resource Manager templatesを参考に修正した方が良さそう。