代码之家  ›  专栏  ›  技术社区  ›  Gregory Suvalian

如何在ARM模板中使用条件复制语句

  •  0
  • Gregory Suvalian  · 技术社区  · 7 年前

    - 如下

    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"
                        }
                    }
                ]
    

    "dataDisks": "[if(equals(length(parameters('DataDiskArray')),0),json('null'),variables('dataDisks'))]"
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   4c74356b41    7 年前

    首先,您的变量声明是错误的,应该是这样的:

    "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 声明)。或者你需要 如果 在您尝试访问 参数