问题描述
我正在构建一个 ARM(Azure 资源管理器)模板来创建多个相同类型的资源。假设 sql 服务器的指标警报。我有:
本质上,我总共需要 180 个资源。有什么方法可以构建和使用这些变量的所有可能组合。 IE。对于每台服务器,我需要监控 3 个指标,其中每个指标都可以根据指标级别触发 3 个可能的警报级别。
自然地,我想到了这些数组的笛卡尔积,然后对它进行 copy
循环以填充模板属性。但是,ARM 似乎不支持此功能。
是否应该考虑编写代码生成器来创建模板而不是尝试弯曲 ARM json,而不是使用 ARM?
解决方法
关于此问题,您可以将 copy
元素添加到模板的资源部分。这样做之后,您可以动态设置要部署的资源数量。详情请参阅here和here。
例如
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#","contentVersion": "1.0.0.0","parameters": {
"org": {
"type": "array","defaultValue": [
"contoso","fabrikam","coho"
]
}
},"resources": [
{
"apiVersion": "2017-06-01","type": "Microsoft.Storage/storageAccounts","name": "[concat(parameters('org')[copyIndex()],uniqueString(resourceGroup().id))]","location": "[resourceGroup().location]","sku": {
"name": "Standard_LRS"
},"kind": "Storage","properties": {},"copy": {
"name": "storagecopy","count": "[length(parameters('org'))]"
}
}
],"outputs": {}
}