首页 > 解决方案 > ARM 模板中的混合常规属性和复制属性

问题描述

使用属性迭代,我们可以将 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 数组值添加更多探针。

标签: azure-resource-manager

解决方案


你只需要这样做:

"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 属性


推荐阅读