首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Azure ARM模板中跨“`copy`”声明引用变量

在Azure ARM模板中跨“`copy`”声明引用变量
EN

Stack Overflow用户
提问于 2019-11-04 19:39:52
回答 1查看 158关注 0票数 0

我正在创建Azure ARM模板。我使用copy声明来避免重复我的代码;但是,我发现这通常会导致重复。考虑来自ARM Lab 6的以下示例

代码语言:javascript
复制
  "variables": {
    "hubID": "[if(parameters('peer'), resourceId(parameters('hub').resourceGroup, 'Microsoft.Network/virtualNetworks/', parameters('hub').vnet.name), '')]",
    "spokeID": "[resourceId('Microsoft.Network/virtualNetworks/', parameters('spoke').vnet.name)]",
    "copy": [
        {
            "name": "subnets",
            "count": "[length(parameters('spoke').subnets)]",
            "input": {
              "name": "[parameters('spoke').subnets[copyIndex('subnets')].name]",
              "addressPrefix": "[parameters('spoke').subnets[copyIndex('subnets')].addressPrefix]",
              "id": "[concat(resourceId('Microsoft.Network/virtualNetworks/', parameters('spoke').vnet.name), '/subnets/', parameters('spoke').subnets[copyIndex('subnets')].name)]"
            }
        }
    ]
  }

parameters('spoke').subnets[copyIndex('subnets')]表达式重复多次。有没有办法将这个copy-indexed表达式的结果赋给一个变量,然后可以在copy声明中引用该变量?

EN

回答 1

Stack Overflow用户

发布于 2019-11-04 20:34:27

我不这么认为,理论上你可以用这些id的列表创建一个变量,然后在其他几个拷贝变量中使用copyIndex()来访问它们,但是你仍然需要以类似的方式声明第一个变量。

从技术上讲,您可以编写一个接受copyIndex()值作为输入并从parameters('spoke').subnets数组中检索特定实例的函数,但是如果您同时需要nameaddressPrefix,则函数还需要接受要返回的参数(否则它将返回一个对象,您需要访问该对象的属性)。我不确定ARM模板函数是否可以返回对象,我从来没有真正使用过ARM模板中的函数,因为它们几乎没有用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58692685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档