Check! Azure Metrics advisor をARMテンプレートでデプロイする
Prologue
この記事は、Microsoft Azure Cognitive Services Advent Calendar 2020 の 22日目に滑り込みたい野望の記事です!(無謀
Azure Metrics Advisor は、IoT のデータやインフラのログ解析に利用できそうなので興味があります。
この機会に理解を深めようとおもいましたが、ちょうど仕事納めと被って残り2時間ほどで何とかしないとならなくなったので、十八番の ARMテンプレートネタでやり切りたいと思います!
プレビューだからか、ARMテンプレートの情報はまだ見当たらない?
Metrics Advisor はまだプレビューだからか、ARMテンプレートのリファレンスが見当たりません。
そんなときは!
デプロイしてみます!!
というのも、ARMテンプレートを処理するのは、他でもない Azure の中枢 Azure Resoure Manager なので、プレビューだとしてもサービスを利用できる状態であれば、ARMテンプレートの構造は決まっているのです。
そして、そのデプロイ済みの構成の ARMテンプレートは、Azureポータルから閲覧、ダウンロードできるのです。
Metrics Advisor のARMテンプレート
実際にデプロイしたリソースのテンプレートを確認する
早速 Metrics Advisor をデプロイし、生成されたテンプレートを見てみましょう。
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"accounts_ma_playground20201225_name": {
"defaultValue": "ma-playground20201225",
"type": "String"
}
},
"variables": {},
"resources": [
{
"type": "Microsoft.CognitiveServices/accounts",
"apiVersion": "2017-04-18",
"name": "[parameters('accounts_ma_playground20201225_name')]",
"location": "westus2",
"sku": {
"name": "S0"
},
"kind": "MetricsAdvisor",
"properties": {
"apiProperties": {},
"customSubDomainName": "[parameters('accounts_ma_playground20201225_name')]",
"privateEndpointConnections": [],
"publicNetworkAccess": "Enabled"
}
}
]
}
なるほど! Microsoft.CognitiveServices/accounts
のリソースを設定するだけでデプロイできるんですね!😳
なお、このテンプレートは、Azureポータルの Export template から閲覧、ダウンロードすることができます。
Microsoft.CognitiveServices/accounts
を改めて確認する
さて、このリソースプロバイダ Microsoft.CognitiveServices/accounts
は、新しいものではありません。ほかの Cognitive Services をデプロイする際にも利用するプロバイダです。
どこが決め手かというと、kind
が MetricsAdvisor
になっているので、きっとこれでしょう!(勘
自分でも ARMテンプレートを書いてデプロイしてみる
↑の生成されたテンプレートだと、場合によってはAPIバージョンが古かったり、パラメータや命名規則がいまいちだったりするので、自分で書きなおすのが好きです。
書き始めは、前述↑のリファレンスを参考に、まずは Required の設定を書いていきます。
余談ですが、ARMテンプレートをかくときは、Visual Studio Code + Azure Resource Manager (ARM) Tools 拡張の組合せが最強に書きやすいですので、お勧めです!
ということで書きあがったテンプレートはこちらです。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"metricsAdvisorName": {
"type": "string"
},
"metricsAdvisorLocation": {
"type": "string",
"allowedValues": [
"westus2",
"westeurope"
]
},
"metricsAdvisorSkuName": {
"type": "string",
"defaultValue": "S0",
"allowedValues": [
"S0"
]
}
},
"resources": [
{
"name": "[parameters('metricsAdvisorName')]",
"type": "Microsoft.CognitiveServices/accounts",
"apiVersion": "2017-04-18",
"kind": "MetricsAdvisor",
"location": "[parameters('metricsAdvisorLocation')]",
"sku": {
"name": "[parameters('metricsAdvisorSkuName')]"
},
"properties": {}
}
]
}
さっきより心なしかすっきりしましたね♪(好みの問題
location
や sku
は、Azureポータルでリソースを作成するときの選択肢から推測しました。それ以外の項目は、ポータルでも特に指定していなかったのでデフォルト値と推測し、特に指定せずやってみます。
それではさっそくデプロイしてみます。ここでは Azure CLI を利用します。
RESOURCE_GROUP="<resource group name>"
LOCATION="japaneast"
az group create --name $RESOURCE_GROUP --location $LOCATION
az deployment group create \
--resource-group $RESOURCE_GROUP \
--template-file /path/to/deploy.json \
--parameters \
metricsAdvisorName=my-metrics-advisor
metricsAdvisorLocation=westeurope
無事!デプロイできました!🥳
Epilogue
Metrics Advisor はほぼマネージドのサービスなので、ARMテンプレートでデプロイすることはないかもしれませんが、何かのお役に立てれば幸いです😊
それにしても、仕事納めのラストスパートを駆け抜けてからの、レッドブルをあおっての執筆だったので、ちょっとテンションがおかしいですね😇
メリークリスマス!🎄
Discussion