ARM 模板中的混合常规属性和复制属性

Mixed regular and copied properties in ARM template

使用property iteration我们可以增加ARM资源中的属性。但是我怎样才能将这些复制的属性与其他明确键入的属性混合在一起呢? 我期望的可能看起来像这个片段(当然它是不正确的,因为 "probes" 属性 是重复的)。

"probes": [
{
    "name": "FirstProbe",
    "properties": {
    "intervalInSeconds": 5,
    "numberOfProbes": 2,
    "port": 123,
    "protocol": "Tcp"
    }
},
{
    "name": "SecondProbe",
    "properties": {
    "intervalInSeconds": 5,
    "numberOfProbes": 2,
    "port": 456,
    "protocol": "Tcp"
    }
}
],
"copy": [
{
    "name": "probes",
    "count": "[length(parameters('someParam'))]",
    "input": {
    "name": "[concat('OtherProbe', parameters('someParam')[copyindex('probes')])]",
    "properties": {
        "intervalInSeconds": 5,
        "numberOfProbes": 2,
        "port": "[parameters('someParam')[copyindex('probes')]]",
        "protocol": "Tcp"
    }
    }
}
]

所以在这种情况下,我需要明确定义前两个探测器(FirstProbe 和 SecondProbe),但我还需要根据 someParam 数组值添加更多探测器。

你只需要这样做:

"variables": {
    "probes-static": [
        {
            "name": "FirstProbe",
            "properties": {
                "intervalInSeconds": 5,
                "numberOfProbes": 2,
                "port": 123,
                "protocol": "Tcp"
            }
        },
        {
            "name": "SecondProbe",
            "properties": {
                "intervalInSeconds": 5,
                "numberOfProbes": 2,
                "port": 456,
                "protocol": "Tcp"
            }
        }
    ],
    "copy": [
        {
            "name": "probes-loop",
            "count": "[length(parameters('someParam'))]",
            "input": {
            "name": "[concat('OtherProbe', parameters('someParam')[copyindex('probes')])]",
                "properties": {
                    "intervalInSeconds": 5,
                    "numberOfProbes": 2,
                    "port": "[parameters('someParam')[copyindex('probes')]]",
                    "protocol": "Tcp"
                }
            }
        }
    ],
    "probes": "[concat(variables('probes-static'), variables('probes-loop'))]"
}

然后你可以使用variable('probes')作为结果并将其分配给LB 属性