在ARM模板中使用具有重复属性和不重复属性的“复制”命令

时间:2019-02-14 02:41:55

标签: arm-template

我正在创建一个具有FTP流量规则的ARM模板。我想在负载平衡器的probes属性内使用copy命令为一系列端口创建探针,但是我也有其他不需要重复的探针(不在复制范围之内)。当我尝试同时添加两者时,ARM模板说这是无效的,因为probes属性已经存在。除了其他值之外,还可以使用“复制”语法吗?或者“复制”必须是构建整个数组值列表的唯一ARM语法?

{
  "type": "Microsoft.Network/loadBalancers",
  "sku": {
    "name": "Standard",
    "tier": "Regional"
  },
  "name": "[variables('lb-csl-private.name')]",
  "apiVersion": "2018-10-01",
  "location": "[resourceGroup().location]",
  "scale": null,
  "properties": {
    "frontendIPConfigurations": [
      {
        "name": "LoadBalancerFrontEnd",
        "properties": {
          "privateIPAddress": "[variables('ip-lb-csl-private')]",
          "privateIPAllocationMethod": "Dynamic",
          "subnet": {
            "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('vnet-csl.name'), variables('vnet-csl.subnets.loadBalancerName'))]"
          }
        }
      }
    ],
    "copy": [
      {
        "name": "probes",
        "count": 10,
        "input": {
          "name": "[concat('probe-CSL-PASV-', copyIndex('probes'))]",
          "properties": {
            "protocol": "Tcp",
            "port": "[copyIndex('probes')]",
            "inervalInSeconds": 5,
            "numberOfProbes": 2
          }
        }
      }
    ],
    "probes": [
      {
        "name": "probe-CSL-FTP",
        "properties": {
          "protocol": "Tcp",
          "port": 21,
          "intervalInSeconds": 5,
          "numberOfProbes": 2
        }
      }
    ],
    "inboundNatRules": [],
    "outboundRules": [],
    "inboundNatPools": []
  }
}

1 个答案:

答案 0 :(得分:0)

可以使用变量来做到这一点:

"variables": {
    "copy": [
      {
        "name": "probes",
        "count": 10,
        "input": {
          "name": "[concat('probe-CSL-PASV-', copyIndex('probes'))]",
          "properties": {
            "protocol": "Tcp",
            "port": "[copyIndex('probes')]",
            "inervalInSeconds": 5,
            "numberOfProbes": 2
          }
        }
      }
    ],
    "otherProbes": [
        {
             probe1
        },
        {
             probe2
        },
        etc
    ]
}

然后在您的负载均衡器中:

"probes": "[concat(variables('probes'), variables('otherProbes'))]"