5

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

完整的细节如下。


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

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

4

2 回答 2

6

对于在谷歌中找到这个的其他人(就像我一样):

现在可以在一个 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": {
            }
        }
    ]
}
于 2018-01-18T10:10:57.980 回答
5

无法从模板将资源部署到多个资源组中。仅仅因为Azure 资源管理器 REST API 参考只有一个地方来指定资源组名称。

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

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

于 2016-02-12T04:35:38.677 回答