Использование команды «Копировать» в шаблоне ARM со свойствами, которые повторяются, а некоторые - нет - PullRequest
0 голосов
/ 14 февраля 2019

Я создаю шаблон ARM, в котором есть правила для трафика FTP.Я хотел бы использовать команду copy в свойстве probes балансировщика нагрузки для создания зондов для диапазона портов, но у меня также есть другие зонды, которые не нужно повторять (выходят за пределы копии).Когда я пытаюсь добавить оба, шаблон ARM говорит, что он недействителен, потому что свойство probes уже присутствует.Можно ли использовать синтаксис «copy» в дополнение к другому значению, или «copy» должен быть единственным синтаксисом 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 голосов
/ 14 февраля 2019

это можно сделать с помощью переменных:

"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'))]"
...