0

我正在构建一个模板以使用该函数部署链接模板n次,copy同时增加正在使用的对象变量(例如 from vmRole1to vmRole2),但似乎虽然我能够将适当的变量字符串连接在一起(例如variables('vmRole1').roleInstanceCount)在传递给链接模板之前,它实际上从未被评估过。

有什么方法可以强制 ARM 模板在将其发送到链接模板之前实际评估循环内的连接字符串?

可变样本:

"vmRole1": {
  ...
  "roleInstanceCount": 2,
  ...
}

资源样本:

{
  "apiVersion": "2015-01-01",
  "type": "Microsoft.Resources/deployments",
  "name": "[concat('DeployRole',copyIndex(1) ,variables('vmRole1Name'))]",
  "copy": {
    "name": "rolecopy",
    "count": 2
  },
  "properties": {
    "mode": "Incremental",
    "templateLink": {
      "uri": "<proper URL here>",
      "contentVersion": "1.0.0.0"
    },
    "parameters": {
      ...
      "roleInstanceCount": { "value": "[concat('variables(', variables('singleQuote'), 'vmRole', copyIndex(1), variables('singlequote'), ').roleInstanceCount')]" },
      ...
4

1 回答 1

1

简单的答案- 不。
奇怪的答案- 也许,如果您使用另一组嵌套模板来验证这些值。
长答案-您这样做完全错误。我不知道你为什么要假装你正在动态地构建一些东西来做这么奇怪的事情......

尝试这样做(使用您的路线):

"value": "[variables(concat('vmRole', copyIndex())).roleInstanceCount]

但老实说,我会将 vmRole1\vmRole2...\vmRole100 废话转换为数组和引用对象,如下所示:

"value": "[variables('vmReferenceArray')[copyIndex()].propertyX]"

你的变量看起来像这样:

"vmReferenceArray": [
    {
        propertyX: ...
        propertyY: ...
        ...
    },
    {
        ...
    },
    ...
    {
        ...
    }
]
于 2017-07-12T21:24:46.883 回答