有谁知道如何将ARM模板中的资源放入特定的不同资源组?这可能是一个RG中的存储和另一个RG中的网络,两者都是在相同或不同的模板中创建的(例如,嵌套)。
详情如下。
阅读最佳做法指南ARM template best practice和白皮书World Class ARM Templates Considerations and Proven Practices,建议部署的不同元素应位于不同的资源组中。例如,在IaaS解决方案中,您的DC可能位于Admin RG中,后端服务器位于另一个中,而您的客户端桌面位于第三个。
我目前正在尝试通过嵌套模板部署这样的解决方案,我偶然发现了一个问题,即创建的所有项目都会自动放置在关闭进程时选择的资源组内(即父模板)。我在线查看了各种文档,但显然无法找到将模板中创建的资源强制到特定资源组的方法。有没有人这样做过?
答案 0 :(得分:5)
无法从模板将资源部署到多个资源组中。仅仅因为Azure Resource Manager REST API Reference只有一个地方来指定资源组名称这一事实。
ARM模板的概念是您创建资源组并将模板部署到其中,从而提供单个管理单元来管理这些资源。这改进了Azure Service Management模型,您必须单独管理每个资源。
嵌套资源组是满足您需求的一个很好的功能,但我从来没有听说过为Azure计划过这样的事情。
答案 1 :(得分:3)
对于在谷歌中发现这一点的其他人(就像我一样):
现在可以在一个ARM模板中将资源部署到多个资源组。 Microsoft提供了详细信息:https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-manager-cross-resource-group-deployment了解详细信息。
要执行此操作,请在主要部署模板中包含嵌套部署模板,并将嵌套部署设置为另一个资源组。这是MS站点的一个例子:
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storagePrefix": {
"type": "string",
"maxLength": 11
},
"secondResourceGroup": {
"type": "string"
},
"secondSubscriptionID": {
"type": "string",
"defaultValue": ""
},
"secondStorageLocation": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"variables": {
"firstStorageName": "[concat(parameters('storagePrefix'), uniqueString(resourceGroup().id))]",
"secondStorageName": "[concat(parameters('storagePrefix'), uniqueString(parameters('secondSubscriptionID'), parameters('secondResourceGroup')))]"
},
"resources": [
{
"apiVersion": "2017-05-10",
"name": "nestedTemplate",
"type": "Microsoft.Resources/deployments",
"resourceGroup": "[parameters('secondResourceGroup')]",
"subscriptionId": "[parameters('secondSubscriptionID')]",
"properties": {
"mode": "Incremental",
"template": {
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {},
"variables": {},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"name": "[variables('secondStorageName')]",
"apiVersion": "2017-06-01",
"location": "[parameters('secondStorageLocation')]",
"sku":{
"name": "Standard_LRS"
},
"kind": "Storage",
"properties": {
}
}
]
},
"parameters": {}
}
},
{
"type": "Microsoft.Storage/storageAccounts",
"name": "[variables('firstStorageName')]",
"apiVersion": "2017-06-01",
"location": "[resourceGroup().location]",
"sku":{
"name": "Standard_LRS"
},
"kind": "Storage",
"properties": {
}
}
]
}