【问题标题】:Azure Virtual Machine ARM Template CopyIndex exclude avSetAzure 虚拟机 ARM 模板 CopyIndex 排除 avSet
【发布时间】:2020-08-18 13:14:36
【问题描述】:

我正在尝试从变量对象部署多个虚拟机,其中一些虚拟机需要添加到 AVSet,而其他虚拟机不需要。

我正在努力寻找一种方法来遍历对象,同时排除 AVSet 等。

    "virtualMachineSettings": [
        {
            "name": "WEBSERVER",
            "subnet": "web",
            "vmSize": "Standard_B2ms",
            "publisher": "[parameters('standardVMPublisher')]",
            "offer": "[parameters('standardVMoffer')]",
            "sku": "[parameters('standardVMsku')]",
            "avset": "webServersAVSet"
        },  
        {
            "name": "APPSERVER",
            "subnet": "app",
            "vmSize": "Standard_B2ms",
            "publisher": "[parameters('standardVMPublisher')]",
            "offer": "[parameters('standardVMoffer')]",
            "sku": "[parameters('standardVMsku')]",
            "avset": "appServersAVSet"
        },
        {
            "name": "TESTSERVER",
            "subnet": "data",
            "vmSize": "Standard_B2ms",
            "publisher": "[parameters('standardVMPublisher')]",
            "offer": "[parameters('standardVMoffer')]",
            "sku": "[parameters('standardVMsku')]",
            "avset": ""
        },
        {
            "name": "SQLSERVER",
            "subnet": "data",
            "vmSize": "Standard_B4ms",
            "publisher": "MicrosoftSQLServer",
            "offer": "SQL2017-WS2016",
            "sku": "SQLDEV",
            "avset": ""
        }

    ],

        {
            "type": "Microsoft.Compute/virtualMachines",
            "apiVersion": "2019-07-01",
            "name": "[concat(variables('VirtualMachineSettings')[copyIndex()].name, '-', parameters('octopusTenant'))]",
            "copy": {
                "name": "vmIterator",
                "count": "[length(variables('VirtualMachineSettings'))]"
            },
            "dependsOn": [
                "[concat('Microsoft.Network/networkInterfaces/', variables('virtualMachineSettings')[copyIndex()].name, '-', parameters('octopusTenant'),'-NIC')]",
                "avSet"
            ],
            "location": "[resourceGroup().location]",
            "tags": {
            },
            "properties": {
                "hardwareProfile": {
                    "vmSize": "[variables('virtualMachineSettings')[copyIndex()].vmSize]"
                },
                 "availabilitySet": {
                    "id": "[resourceId('Microsoft.Compute/availabilitySets',variables('virtualMachineSettings')[copyIndex()].avSet)]"
                },

所以我认为如果参数 avset 为空,我需要设置一个 if 语句?但我被困住了。任何帮助都会很棒。

谢谢

【问题讨论】:

  • "availabilitySet": { "id:": "[if(not(empty(variables('virtualMachineSettings')[copyIndex()].avSet)), resourceId('Microsoft.Compute/availabilitySets', variables('virtualMachineSettings')[copyIndex()].avSet), json('null'))]" },
  • 你解决问题了吗?我看到你添加了评论。
  • 嗨,不,我只是发布了我正在尝试的 if 语句,但还是不行:(
  • 使用评论中添加的方式会出现什么错误?我认为这是一个很好的解决方案。
  • 你好,查尔斯。我收到此错误:Status Message: Could not find member 'id:' on object of type 'ApiEntityRef'. Path 'properties.availabilitySet.id:', line 1, position 217. (Code:BadRequest)

标签: azure azure-virtual-machine arm-template


【解决方案1】:

您可以对添加为注释的解决方案和变量virtualMachineSettings 进行一些更改:

"virtualMachineSettings": [
  {
      "name": "WEBSERVER",
      "subnet": "web",
      "vmSize": "Standard_B2ms",
      "publisher": "[parameters('standardVMPublisher')]",
      "offer": "[parameters('standardVMoffer')]",
      "sku": "[parameters('standardVMsku')]",
      "avset": "webServersAVSet",
      "availiabilitySet": {
        "id": "[resourceId('Microsoft.Compute/availabilitySets', "webServersAVSet")]"
      }
  },
  ...
]

"properties": {
  "availabilitySet": "[if(not(empty(variables('virtualMachineSettings')[copyIndex()].avSet)), variables('virtualMachineSettings')[copyIndex()].availiabilitySet)]",
  ...
}

或者您可以在变量virtualMachineSettings中为每个成员设置一个布尔属性来判断是否需要为VM设置可用性集。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多