动态创建 ARM 参数名称
Create ARM parameter names dynamically
我有一个场景需要动态生成参数名称。像 certificate1、certificate2、certificate3 .. 等等。目前所有这些参数都应该在主模板中定义。我们可以在Main/Parent模板中使用复制来迭代和动态定义参数名称吗?或者在 ARM 模板中是否有一种方法可以实现这一点?
您可以使用Azure Template中的复制功能生成资源名称,如certificate1, certificate2, certificate3 ..等等
示例如下:
{
"$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
有关详细信息,请参阅 Deploy multiple instances of a resource or property in Azure Resource Manager Templates。
您可以在变量部分或资源 definition\resource 属性中使用 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 等等
复制到variables\properties:
"copy": [
{
"name": "nameOfThePropertyOrVariableYouWantToIterateOver",
"count": 3,
"input": {
"name": "[concat('something-', copyIndex('nameOfThePropertyOrVariableYouWantToIterateOver', 1))]"
}
}
]
这里你需要用copyIndex函数指定你指的是哪个循环,你也可以使用offset
我有一个场景需要动态生成参数名称。像 certificate1、certificate2、certificate3 .. 等等。目前所有这些参数都应该在主模板中定义。我们可以在Main/Parent模板中使用复制来迭代和动态定义参数名称吗?或者在 ARM 模板中是否有一种方法可以实现这一点?
您可以使用Azure Template中的复制功能生成资源名称,如certificate1, certificate2, certificate3 ..等等
示例如下:
{
"$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
有关详细信息,请参阅 Deploy multiple instances of a resource or property in Azure Resource Manager Templates。
您可以在变量部分或资源 definition\resource 属性中使用 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 等等
复制到variables\properties:
"copy": [
{
"name": "nameOfThePropertyOrVariableYouWantToIterateOver",
"count": 3,
"input": {
"name": "[concat('something-', copyIndex('nameOfThePropertyOrVariableYouWantToIterateOver', 1))]"
}
}
]
这里你需要用copyIndex函数指定你指的是哪个循环,你也可以使用offset