【问题标题】:Azure tagging a resource group using an ARM templateAzure 使用 ARM 模板标记资源组
【发布时间】:2020-02-17 22:42:36
【问题描述】:

如何使用 ARM 模板标记 Azure 资源组并使用 Azure DevOps 任务 Azure 部署:创建或更新资源组。我有错误没有找到与请求 URI 匹配的 HTTP 资源


{
  "$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {

    "customTags": {
      "type": "object",
      "defaultValue": {
        "Environment Name": "TRdev",
        "Environment Type":"Dev",
        "Product family":"RT"
      }
    },
    "rgName": {
      "type": "string",
      "defaultValue": "dev-rg",
      "metadata": {
        "description": "Name of the resourceGroup to create"
      }
    },
    "serverfarms_environment_sp_sku": {
        "defaultValue": "B1",
        "allowedValues": [ "B1", "S1", "P1V2", "P2V2", "P3V2"],
        "type": "String"
    },
    "serverfarms_environment_sp_name": {
        "defaultValue": "dev-sp",
        "type": "String"
    },
    "sites_environment_api_name": {
        "defaultValue": "dev-api",
        "type": "String"
    },
    "sites_environment_ui_name": {
        "defaultValue": "dev-ui",
        "type": "String"
    }   
  },
  "variables": { },
  "resources": [
         {
      "type": "Microsoft.Resources/resourceGroups",
      "apiVersion": "2018-05-01",
      "location": "West US",    
      "name": "[parameters('rgName')]",            
      "tags": "[parameters('customTags')]",
      "properties": {}
   },
    {
      "apiVersion": "2019-08-01",
      "name": "[parameters('rgName')]",
      "type": "Microsoft.Resources/deployments",
      "resourceGroup": "[parameters('rgName')]",
      "tags": "[parameters('customTags')]",
      "properties": {
        "mode": "Incremental",
        "template": {
          "$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
          "contentVersion": "1.0.0.1",
          "parameters": {},
          "resources": [
                {
                "apiVersion": "2018-02-01",
                "type": "Microsoft.Web/serverfarms",
                "kind": "app",
                "name": "[parameters('serverfarms_environment_sp_name')]",
                "location": "[resourceGroup().location]",
                "tags": "[parameters('customTags')]",
                "properties": {},
                "dependsOn": [],
                "sku": {
                    "name": "[parameters('serverfarms_environment_sp_sku')]"
                    }
                },
                {
                "apiVersion": "2018-11-01",
                "type": "Microsoft.Web/sites",
                "kind": "app",
                "name": "[parameters('sites_environment_api_name')]",
                "location": "[resourceGroup().location]",
                "tags": "[parameters('customTags')]",
                "properties": {
                    "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', parameters('serverfarms_environment_sp_name'))]"
                },
                "dependsOn": [
                    "[resourceId('Microsoft.Web/serverfarms', parameters('serverfarms_environment_sp_name'))]"
                ]
                },
                {
                "apiVersion": "2018-11-01",
                "type": "Microsoft.Web/sites",
                "kind": "app",
                "name": "[parameters('sites_environment_ui_name')]",
                "location": "[resourceGroup().location]",
                "tags": "[parameters('customTags')]",
                "properties": {
                    "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', parameters('serverfarms_environment_sp_name'))]"
                },
                "dependsOn": [
                    "[resourceId('Microsoft.Web/serverfarms', parameters('serverfarms_environment_sp_name'))]"
                ]
                }
          ]
        },
        "parameters": {}
      }
    }
  ],
  "outputs": {
    "sites_environment_api_name": {
      "type": "string",
      "value": "[parameters('sites_environment_api_name')]"
    },
    "sites_environment_ui_name": {
      "type": "string",
      "value": "[parameters('sites_environment_ui_name')]"
    }
  }
}



Error

错误未找到与请求 URI 'https://management.azure.com/subscriptions/subscriptionsID/resourcegroups/resourcegroupsNeme/providers/Microsoft.Resources/resourceGroups/resourcegroupsNeme?api-version=2018-05-01' 匹配的 HTTP 资源。


谢谢。

【问题讨论】:

  • ...你的 ARM 模板是什么样的?

标签: azure azure-resource-manager arm-template


【解决方案1】:

您尝试实现的目标称为订阅级别部署。如果您尝试通过门户通过模板部署它,恐怕您不走运。部署 UI 坚持要求您指定要部署的资源组,在调用创建资源组时,API 路径路由会失效。

要克服这个问题,您需要使用 PowerShell 或 Azure CLI。

订阅级部署的另一个问题是您不能使用 resourceGroup() 函数,因此需要调整您的模板。

你的模板应该是:

{
    "$schema":"https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
    "contentVersion":"1.0.0.0",
    "parameters":{
        "customTags":{
            "type":"object",
            "defaultValue":{
                "Environment Name":"TRdev",
                "Environment Type":"Dev",
                "Product family":"RT"
            }
        },
        "rgName":{
            "type":"string",
            "defaultValue":"dev-rg",
            "metadata":{
                "description":"Name of the resourceGroup to create"
            }
        },
        "serverfarms_environment_sp_sku":{
            "defaultValue":"B1",
            "allowedValues":[
                "B1",
                "S1",
                "P1V2",
                "P2V2",
                "P3V2"
            ],
            "type":"String"
        },
        "serverfarms_environment_sp_name":{
            "defaultValue":"dev-sp",
            "type":"String"
        },
        "sites_environment_api_name":{
            "defaultValue":"dev-api",
            "type":"String"
        },
        "sites_environment_ui_name":{
            "defaultValue":"dev-ui",
            "type":"String"
        }
    },
    "variables":{

    },
    "resources":[
        {
            "type":"Microsoft.Resources/resourceGroups",
            "apiVersion":"2018-05-01",
            "location":"West US",
            "name":"[parameters('rgName')]",
            "tags":"[parameters('customTags')]",
            "properties":{

            }
        },
        {
            "apiVersion":"2019-08-01",
            "name":"[parameters('rgName')]",
            "type":"Microsoft.Resources/deployments",
            "resourceGroup":"[parameters('rgName')]",
            "tags":"[parameters('customTags')]",
            "dependsOn": [
                "[resourceId('Microsoft.Resources/resourceGroups/', parameters('rgName'))]"
            ],
            "properties":{
                "mode":"Incremental",
                "template":{
                    "$schema":"https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
                    "contentVersion":"1.0.0.1",
                    "resources":[
                        {
                            "apiVersion":"2018-02-01",
                            "type":"Microsoft.Web/serverfarms",
                            "kind":"app",
                            "name":"[parameters('serverfarms_environment_sp_name')]",
                            "location":"[resourceGroup().location]",
                            "tags":"[parameters('customTags')]",
                            "properties":{

                            },
                            "dependsOn":[

                            ],
                            "sku":{
                                "name":"[parameters('serverfarms_environment_sp_sku')]"
                            }
                        },
                        {
                            "apiVersion":"2018-11-01",
                            "type":"Microsoft.Web/sites",
                            "kind":"app",
                            "name":"[parameters('sites_environment_api_name')]",
                            "location":"[resourceGroup().location]",
                            "tags":"[parameters('customTags')]",
                            "properties":{
                                "serverFarmId":"[resourceId('Microsoft.Web/serverfarms', parameters('serverfarms_environment_sp_name'))]"
                            },
                            "dependsOn":[
                                "[resourceId('Microsoft.Web/serverfarms', parameters('serverfarms_environment_sp_name'))]"
                            ]
                        },
                        {
                            "apiVersion":"2018-11-01",
                            "type":"Microsoft.Web/sites",
                            "kind":"app",
                            "name":"[parameters('sites_environment_ui_name')]",
                            "location":"[resourceGroup().location]",
                            "tags":"[parameters('customTags')]",
                            "properties":{
                                "serverFarmId":"[resourceId('Microsoft.Web/serverfarms', parameters('serverfarms_environment_sp_name'))]"
                            },
                            "dependsOn":[
                                "[resourceId('Microsoft.Web/serverfarms', parameters('serverfarms_environment_sp_name'))]"
                            ]
                        }
                    ]
                },
            }
        }
    ],
    "outputs":{
        "sites_environment_api_name":{
            "type":"string",
            "value":"[parameters('sites_environment_api_name')]"
        },
        "sites_environment_ui_name":{
            "type":"string",
            "value":"[parameters('sites_environment_ui_name')]"
        }
    }
}

您可以将此文件保存到本地机器并按如下方式部署。

PowerShell:

New-AzDeployment -TemplateFile '<path-to-template>' -Location 'West US'

Azure CLI:

az deployment create --template-file "<path-to-template>" --location "US West"

您将看到有关即将发生的重大更改的警告。 Microsoft 正在向 PowerShell 引入强制参数 ScopeType,向 CLI 引入具有四个可能值的范围类型 - ResourceGroup、Subscription、ManagementGroup 和 Tenant。在这种情况下,您可以将 ScopeType 设置为 Subscription,但您可以看到 Microsoft 与其他公司的进展情况。

我预计门户模板部署 UI 将很快更新。

【讨论】:

  • @Daniel Mann 示例我的 ARM 模板 "resources": [ { "type": "Microsoft.Resources/resourceGroups", "apiVersion": "2018-05-01", "location": "West US", "name": "[parameters('rgName')]", "tags": "[parameters('customTags')]", "properties": {} }, { "apiVersion": "2019-08-01", "name": "[parameters('rgName')]", "type": "Microsoft.Resources/deployments", "resourceGroup": "[parameters('rgName')]", "tags": "[parameters('customTags')]", "properties": { "mode": "Incremental",
  • Microsoft.Resources/deployments 部署正常,但资源组的部署出现同样的错误
  • 您能否编辑您的问题并包含您遇到的完整模板和错误?
  • 完成。非常感谢。
  • 更新了我的答案:)
【解决方案2】:

或者,ARM 模板可以保持原样,并在运行一些简单的 powershell 之后有一个额外的步骤,例如:

Set-AzResourceGroup -Name "YOURRESOURCEGROUPNAME" -Tag @{Department="IT"}

这将允许您维护当前的 CI/CD 结构。

更多关于使用Powershell to update the Resource Group的信息

【讨论】:

    【解决方案3】:
    {
      "type": "Microsoft.Resources/tags",
      "name": "default",
      "apiVersion": "2021-04-01",
      "properties": {
        "tags": "[variables('resourceTags')]"
      }
    }
    

    您可以使用“标签”资源将标签应用于目标资源组。在这种情况下,我使用了一个变量来存储我的默认标签,但您也可以显式定义它们。

    查看以下内容了解更多详情: https://docs.microsoft.com/en-us/azure/azure-resource-manager/management/tag-resources?tabs=json#apply-tags-to-resource-groups-or-subscriptions

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-05
      • 1970-01-01
      相关资源
      最近更新 更多