如何在 Azure 资源管理器嵌套模板中定义特定资源组

How to define specific Resource Group in Azure Resource Manager nested template

有谁知道如何将 ARM 模板中的资源放入特定的、不同的资源组中?这可能是一个 RG 中的存储和另一个 RG 中的网络,两者都在相同或不同的模板(例如嵌套)中创建。

完整详情如下。


通读最佳实践指南ARM template best practice and the whitepaper World Class ARM Templates Considerations and Proven Practices,建议部署的不同元素应位于单独的资源组中。例如,在 IaaS 解决方案中,您的 DC 可能位于 Admin RG 中,您的后端服务器位于另一个中,而您的客户端桌面位于第三个中。

我目前正在尝试通过嵌套模板部署这样的解决方案,我偶然发现了一个问题,即所有正在创建的项目都会自动放置在启动进程时选择的资源组中(即父模板) ).我已经在线查看了各种文档,但显然无法找到一种方法来强制在模板中创建的资源进入特定的资源组。有人做过吗?

无法从一个模板将资源部署到多个资源组中。仅仅是因为 Azure Resource Manager REST API Reference 只有一个地方可以指定资源组名称。

ARM 模板的概念是您创建一个资源组并将模板部署到其中,从而提供一个管理这些资源的管理单元。这改进了您必须单独管理每个资源的 Azure 服务管理模型。

嵌套资源组将是一个很好的功能,可以满足您的需求,但我从未听说过为 Azure 计划过这样的事情。

对于在 google 中找到此内容的任何其他人(就像我一样):

现在可以在一个 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": {
            }
        }
    ]
}