我看到了一些示例并回答了如何进行条件复制,但是似乎没有足够的灵活性来使磁盘的数量和大小都具有灵活性。我的模板需要一个参数,该参数标识存储类型和以-
分隔的磁盘大小,如下所示
DataDiskArray: {
value: [
"Standard_LRS-64",
"Standard_LRS-1036"
]
}
只要我有至少一个磁盘,它就可以正常工作,但是当我根本不需要像
这样的数据磁盘时,我很难理解该怎么做。DataDiskArray: {
value: [ ]
}
我将copy[]
语句放入变量中,但它仍在评估中并且失败
"dataDisks": {
"copy": [
{
"name": "dataDisks",
"count": "[if(equals(length(parameters('DataDiskArray')),0), 1, length(parameters('DataDiskArray')))]",
"input": {
"caching": "ReadWrite",
"diskSizeGB": "[split(parameters('DataDiskArray')[copyIndex('dataDisks')],'-')[1]]",
"lun": "[copyIndex('dataDisks')]",
"name": "[concat(parameters('VirtualMachineName'), '-DDisk', string(add(copyIndex('dataDisks'),1)))]",
"managedDisk": {
"storageAccountType": "[split(parameters('DataDiskArray')[copyIndex('dataDisks')],'-')[0]]"
},
"createOption": "Empty"
}
}
]
VM资源内部的资源部署
"dataDisks": "[if(equals(length(parameters('DataDiskArray')),0),json('null'),variables('dataDisks'))]"
答案 0 :(得分:0)
首先,您的变量声明错误,应该就是这样:
"variables": {
"copy": [
{
"name": "blah" <<< name of the created variable
<<ommited>>
}
]
}
发生这种情况是因为总是对变量进行求值,也就是说,您只需要调节所有条件,或者使用“代理”:
"proxy": "[if(empty(parameters('DataDiskArray')), variables('fakearray'), parameters('DataDiskArray'))]"
"fakearray": [
"Standard_LRS-64"
]
,然后您将使用相同的副本,但是定位proxy
变量,而不是datadiskarray
参数。 (您也可以删除if
语句)。或者您在尝试访问if
参数的任何地方都需要datadiskarray
语句