ARM 模板中的预定义资源组

Predefined Resource Group in ARM Template

我正在制作自定义手臂模板。

我想在 JSON 中硬编码特定的资源组,所以 打开模板时,它将模拟 "Resource Group: Use existing: predefined selected Resource group"

我挠了挠脑袋好几个小时,深入搜索了网络,我也尝试导出现有资源组模板并将其导入自定义部署,但它仍然显示

资源组*创建新的*使用现有的

有什么方法可以在 JSON 模板中定义现有的 RG 吗?

有几种方法可以实现这一点(不是说它有意义,但你可以这样做)。

  1. 围绕模板使用自动化以始终将其部署到同一个 rg。这最有意义,因为您的模板保持灵活
  2. 用父模板包装您的模板(因此 "convert" 您的模板为嵌套模板)。这样父模板可以控制将嵌套模板部署到哪个资源组(查找跨资源组 ARM 模板部署)。
  3. 使您的模板成为嵌套内联模板(最坏情况)。这与第 2 点几乎相同,但更糟的是,因为嵌套内联模板具有无法使用自己的 parameters\variables 的特殊缺点,只能使用父级中定义的模板。

同样,none 这是有道理的,因为您应该将其部署到正确的 subscription\resource 组组合。但如果你坚持的话,你已经拥有了。

但门户体验将保持不变(没有办法解决这个问题,您可以强制模板始终部署到同一资源组(这没有任何意义),但不改变门户经验),如果这就是您所关心的。

您可以使用嵌套模板,如@4c74356b41 所说,但您仍然会在门户中看到难看的 "Select a resource group" 字段。

我有类似的问题(即使@4c74356b41 反复声称它没有任何意义)。我想从参数生成资源组名称。

您可以在此处找到有关如何使用嵌套模板的更多信息:Create resource group and deploy resources

{
    "$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
    "contentVersion": "1.0.0.1",
    "parameters": {
        "someName": {
            "type": "string"
        }
    },
    "variables": {
        "rgName": "[concat('rg-', parameters('someName'))]"
    },
    "resources": [
        {
            "type": "Microsoft.Resources/resourceGroups",
            "apiVersion": "2018-05-01",
            "location": "[parameters('rgLocation')]",
            "name": "[variables('rgName')]",
            "properties": {}
        },
        {
            "type": "Microsoft.Resources/deployments",
            "apiVersion": "2018-05-01",
            "name": "rgDeployment",
            "resourceGroup": "[variables('rgName')]",
            "dependsOn": [
                "[resourceId('Microsoft.Resources/resourceGroups/', variables('rgName'))]"
            ],
            "properties": {
                "mode": "Incremental",
                "template": {
                    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
                    "contentVersion": "1.0.0.0",
                    "parameters": {},
                    "variables": {},
                    "resources": [
                        {
                            // PUT YOUR RESOURCES TEMPLATES HERE! //
                        }
                    ],
                    "outputs": {}
                }
            }
        }
    ],
    "outputs": {}
}

只需将 rgName 变量替换为您的实际资源组名称即可。