具有不同 Vm 名称、大小和相同自定义的多个 Vms Arm 模板

Multiple Vms Arm template with different Vm names,sizes and same custom

我见过很多使用复制功能将多虚拟机创建为循环的模板。例如:vm1、vm2 等。但这不是我们实践的方式,因为每个 vm 都有不同的功能,命名约定也无济于事。 我正在尝试创建一个具有不同 vM 名称、大小和单个自定义图像的模板。 有人可以帮忙吗?

通过使用参数,我们可以区分 VM 名称、大小等:

"parameters": {
    "org": {
    "type": "array",
    "defaultValue": [
        "contoso",
        "fabrikam",
        "coho"
        ]
    }
},

因为 Copy 函数可以从参数数组中获取正确的值,并且可以自动使用 length() 设置计数。

参考MS Docs了解更多。

也看看这个 answer,感谢 SamaraSoucy 的解释。

我建议在模板的参数或变量部分使用 name/value 对数组,例如,

"parameters": {
    "vms": {
        "type": "array",
        "defaultValue": [
            {
                "name": "vm1",
                "size": "Standard_DS1_v2"
            },
            {
                "name": "vm2",
                "size": "Standard_A1_v2"
            }
        ]
    }
}

然后您可以使用

取消引用数组
"copy": {
    "name": "vmCopy",
    "count": "[length(parameters('vms'))]"    
}

parameters('vms')[copyIndex()].name
parameters('vms')[copyIndex()].size