动态创建 ARM 参数名称



>我有一个需要动态生成参数名称的场景。像证书1,证书2,证书3..等等。目前,所有这些参数都应在主模板中定义。我们可以使用 copy 在主/父模板中动态迭代和定义参数名称吗? 或者 ARM 模板中是否有一种方法可以实现这一点?

您可以在变量部分或资源定义\资源属性中使用copy构造。 然后您可以将concat()copyIndex()函数一起使用来创建名称。

例:

[concat('something-', copyIndex())]

这将给你一些名字,比如 something-0、something-1、something-2 等(copyIndex 从 0 开始(。 您还可以选择通过为偏移量copyIndex提供一个偏移量数字:

[concat('something-', copyIndex(10))]

这会给你一些名字,比如 Something-10、Something-11、Something-12 等。

在变量\属性中复制:

"copy": [
{
"name": "nameOfThePropertyOrVariableYouWantToIterateOver",
"count": 3,
"input": {
"name": "[concat('something-', copyIndex('nameOfThePropertyOrVariableYouWantToIterateOver', 1))]"    
}
}
]

在这里,您需要指定使用copyIndex函数引用哪个循环,也可以使用偏移

可以使用 Azure 模板中的复制函数生成资源的名称,就像证书 1、证书 2、证书 3 等一样。

示例如下:

{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"apiVersion": "2016-01-01",
"type": "Microsoft.Storage/storageAccounts",
"name": "[concat('storage',copyIndex())]",
"location": "[resourceGroup().location]",
"sku": {
"name": "Standard_LRS"
},
"kind": "Storage",
"properties": {},
"copy": {
"name": "storagecopy",
"count": 3
}
}
],
"outputs": {}
}

存储名称将如下所示:

存储0 存储1 存储2

有关详细信息,请参阅在 Azure 资源管理器模板中部署资源或属性的多个实例。

最新更新