2

我正在开发一个自定义手臂模板。

我希望在 JSON 中硬编码特定的资源组,因此在打开模板时它将模拟“资源组:使用现有:预定义的选定资源组”

我一直在摸索几个小时并深入搜索网络,我还尝试导出现有资源组模板并将其导入自定义部署,但它仍然显示

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

有没有办法在 JSON 模板中定义现有的 RG?

4

2 回答 2

2

您可以使用嵌套模板,如@4c74356b41 所说,但您仍然会在门户中看到丑陋的“选择资源组”字段。

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

您可以在此处找到有关如何使用嵌套模板的更多信息:创建资源组和部署资源

{
    "$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变量替换为您的实际资源组名称即可。

于 2019-05-24T08:35:08.507 回答
0

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

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

同样,这一切都没有意义,因为您应该将其部署到正确的订阅\资源组组合。但如果你坚持的话,你就有了。

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

于 2018-01-10T09:14:12.553 回答