如何在模板部署中指定可用性集?

How to specify availability set in template deployment?

我创建了一个 linux 映像,我的目的是从同一 VHD 创建其他 VM。这些 VM 需要在一个可用性集中 - 那么是否有一个参数来使用此命令指定可用性集名称?

azure group deployment create --resource-group myRG --template-file temp.json

参考:https://azure.microsoft.com/en-gb/documentation/articles/virtual-machines-linux-capture-image/

在您的 temp.json 文件中添加 availabilitySetName 作为变量(相应地更改):

"variables": {
 ...
  "availabilitySetName": "myAvSet",
 ...
 }

然后将其添加为资源:

"resources": [
 ...
 {
  "type": "Microsoft.Compute/availabilitySets",
  "name": "[variables('availabilitySetName')]",
  "apiVersion": "2015-06-15",
  "location": "[resourceGroup().location]",
  "properties": {}
 }
 ...

继续往下 "resources",找到要添加到可用性集中的虚拟机,并使其依赖于您的可用性集资源。刚刚修改完dependsOn,将其添加到properties对象中。

 {
  "apiVersion": "2015-06-15",
  "type": "Microsoft.Compute/virtualMachines",
  ...
  "dependsOn": [
    ...
    "[concat('Microsoft.Compute/availabilitySets/', variables('availabilitySetName'))]"
    ...
  ],
  "properties": {
    ...
    "availabilitySet": {
      "id": "[resourceId('Microsoft.Compute/availabilitySets',variables('availabilitySetName')) ]"
    }
  ...
  }

更新:

从映像创建 VM 时,最简单的方法是在部署模板之前创建可用性集,就像我们已经对网络接口所做的那样。在这种情况下,您只需引用 "properties" 对象中的资源。

"properties": {
    ...
    "availabilitySet": {
      "id": "[resourceId('Microsoft.Compute/availabilitySets', 'myAsName') ]"
    }
  ...