ARM模板中的预定义资源组

时间:2018-01-10 08:55:57

标签: json azure azure-resource-manager azure-resource-group

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

我想在JSON中对特定的资源组进行硬编码 打开模板时,它将模拟"资源组:使用现有:预定义的选定资源组"

我已经抓了几个小时并深入搜索网页,我还尝试导出现有资源组模板并将其导入自定义部署,但仍显示

资源组*新建*使用现有

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

2 个答案:

答案 0 :(得分:2)

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

我有一个类似的问题(即使@ 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变量替换为实际资源组名称的名称即可。

答案 1 :(得分:0)

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

  1. 在模板周围使用自动化,始终将其部署到同一个rg。这是最有意义的,因为您的模板保持灵活性
  2. 使用父模板包装模板(以便将模板“转换”为嵌套模板)。这样,父模板可以控制嵌套模板部署到哪个资源组(查找跨资源组ARM模板部署)。
  3. 使模板成为嵌套的内联模板(最坏情况)。这与第2点几乎相同,但更糟糕的是,因为嵌套的内联模板具有这样的特殊缺点,即无法使用自己的参数\变量,只能使用父变量中定义的变量。
  4. 同样,这一切都没有意义,因为您应该将其部署到正确的订阅\资源组组合。但如果你坚持的话,你就拥有它。

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