Azure VMのSQL Serverをデプロイする時にデータディスクサイズを指定する

ARM Template,Azure,PowerShell/Azure CLI,Virtual Machine

Azure Portalを使ってMarket Placeから直接Windows SQL Serverをデプロイするとデータディスクが1TBで作成されてしまいます。

後でデータディスクを削除、追加して修正する事も可能なのですが、デプロイ時からディスクサイズを指定した方が便利かと思われます。

そこでデプロイ時にデータディスクのサイズを指定出来るように、ARMテンプレートを作成してみました。

Cent OSの場合のテンプレート作成、デプロイはこちらに記載しております。

スポンサーリンク

Windows SQL Serverをデプロイする為のJsonファイルを作成

VM設定は標準的な設定としています。
データディスクのサイズは、diskSizeGBの値で指定します。今回は128GBで設定しています。

まず、最初にWindows SQL ServerのVMイメージ(SKU)を確認します。

#Image List get

$location=“japaneast"

#pubName Get
#Get-AzVMImagePublisher -Location $location

$pubName=“MicrosoftSQLServer"

#offer Name Get
#Get-AzVMImageOffer -Location $location -Publisher $pubName

$offerName=“SQL2008R2SP3-WS2008R2SP1"
Get-AzVMImageSku -Location $location -Publisher $pubName -Offer $offerName

確認したSKUを指定して、Windows SQL ServerのARMテンプレートを作ってみるとこんな感じになりました。(今回はSQL Server 2008を選択しています。)

{
“$schema": “https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
“contentVersion": “1.0.0.0",
“variables": {
  “location": “japaneast",

  “vmName": “VM名",
  “vmSize": “Standard_B2s",

  “adminUsername": “User Name",
  “adminPassword": “Password",

  “publisher": “MicrosoftSQLServer",
  “offer": “SQL2008R2SP3-WS2008R2SP1",
  “sku": “Standard",

  “nicName": “[concat(variables('vmName’),’_nic’)]",
  “addressPrefix": “XXX.XXX.XXX.XXX/XX",
  “subnetName": “Subnet Name",
  “subnetPrefix": “XXX.XXX.XXX.XXX/XX",
  “virtualNetworkName": “VNET Name",
  “subnetRef": “[resourceId('Microsoft.Network/virtualNetworks/subnets’, variables('virtualNetworkName’), variables('subnetName’))]",

  “diskName": “[concat(variables('vmName’),’_os_disk’)]",
  “DatadiskName": “[concat(variables('vmName’),’_Data_disk’)]",
  “storageAccountType": “Standard_LRS",

  “storageAccountName": “Storage Account Name"

},
 “resources": [
 {
  “type": “Microsoft.Network/virtualNetworks",
  “apiVersion": “2018-11-01",
  “name": “[variables('virtualNetworkName’)]",
  “location": “[variables('location’)]",
  “properties": {
  “addressSpace": {
  “addressPrefixes": [
  “[variables('addressPrefix’)]"
  ]
},
 “subnets": [
 {
  "name": “[variables('subnetName’)]",
  "properties": {
  "addressPrefix": “[variables('subnetPrefix’)]"
    }
   }
  ]
 }
},
{
 "type": “Microsoft.Network/networkInterfaces",
 "apiVersion": “2018-11-01",
 "name": “[variables('nicName’)]",
 "location": “[variables('location’)]",
 "dependsOn": [
 "[resourceId('Microsoft.Network/virtualNetworks/’, variables('virtualNetworkName’))]"
],
“properties": {
 "ipConfigurations": [
 {
 "name": “ipconfig1",
 "properties": {
 "privateIPAllocationMethod": “Dynamic",
 "subnet": {
 "id": “[variables('subnetRef’)]"
     }
    }
   }
  ]
 }
},
{
 "type": “Microsoft.Compute/virtualMachines",
 "apiVersion": “2018-10-01",
 "name": “[variables('vmName’)]",
 "location": “[variables('location’)]",
 "dependsOn": [
 "[resourceId('Microsoft.Network/networkInterfaces/’, variables('nicName’))]"
 ],
 "properties": {
 "hardwareProfile": {
 "vmSize": “[variables('vmSize’)]"
 },
 "osProfile": {
 "computerName": “[variables('vmName’)]",
 "adminUsername": “[variables('adminUsername’)]",
 "adminPassword": “[variables('adminPassword’)]"
 },
 "storageProfile": {
 "imageReference": {
 "publisher": “[variables('publisher’)]",
 "offer": “[variables('offer’)]",
 "sku": “[variables('sku’)]",
 "version": “latest"
 },
 "osDisk": {
 "createOption": “FromImage",
 "name": “[variables('diskname’)]",
 "managedDisk": {
 "storageAccountType": “[variables('storageAccountType’)]"
 }
  },
 "dataDisks": [
 {
 "lun": 0,
 "name": “[variables('datadiskname’)]",

 "createOption": “Empty",
 "managedDisk": {
  "storageAccountType": “[variables('storageAccountType’)]"
  },
  "diskSizeGB": 128

  }
 ]
},
 "networkProfile": {
 "networkInterfaces": [
 {
 "id": “[resourceId('Microsoft.Network/networkInterfaces’,variables('nicName’))]"
 }
 ]
},
 "diagnosticsProfile": {
 "bootDiagnostics": {
 "enabled": true,
 "storageUri": “[concat('https://’, variables('storageAccountName’), '.blob.core.windows.net’)]"
       }
     }
   }
  }
 ]

}

Windows SQL ServerをARMテンプレート使ってデプロイ

テンプレート機能にARMテンプレートを登録します。以下の内容が表示されますので、名前と説明を入力しOKを表示します。

テンプレート画面が表示されますので、デフォルト表示されている内容を削除し、1)で作成したテンプレートをペーストしOKボタンをクリックします。 保存が完了したテンプレートを選択すると以下の画面が表示されますので、リソースグループ名を登録、使用条件に同意し、購入ボタンをクリックします。

デプロイが完了したら、リソースに移動して確認します。無事完成しているかと思います。

登録されているテンプレートをPower Shellから呼び出せない(2019年12月現在)

2019年12月時点では、テンプレート機能に登録したテンプレートを外部から呼び出すことはできないそうです。Azure Portalからのデプロイしかできないそうです。

Power Shell等からARMテンプレートを使ったデプロイを行うには、ローカルに保存したファイルやGitHubを指定してのデプロイとなるようです。

スポンサーリンク