代码之家  ›  专栏  ›  技术社区  ›  Stringfellow

使用新的AzureRmDeployment和链接的ARM模板创建资源组和资源时,如何获取资源组名称?

  •  0
  • Stringfellow  · 技术社区  · 7 年前

    New-AzureRmDeployment commandlet,我在尝试使用 resourceGroup().name 功能和属性。错误消息是:

    Unable to process template language expressions for resource
    '/subscriptions/<subscriptionGuid>/resourceGroups/Zxy- 
    Test/providers/Microsoft.Resources/deployments/storageDeployment' at line 
    '29' and column '5'. 'The template function
    'RESOURCEGROUP' is not expected at this location.`
    

    resourceId(...)

    例如

    "value": "[resourceId('Microsoft.Storage/storageAccounts', variables('storageName'))]"
    

    缺少资源组的结果:

    /subscriptions/<subscriptionGuid>/providers/Microsoft.Storage/storageAccounts/linktestdata
    

    /subscriptions/<subscriptionGuid>/resourceGroups/Zxy-Test/providers/Microsoft.Storage/storageAccounts/linktestdata
    

    我有以下几点 TestMaster.json TestLinked0.json

    TestMaster.json文件

    {
      "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "linkedTemplateUri": {
          "type": "string",
          "metadata": {
            "description": "URI to the linked ARM template file."
          }
        }
      },
      "resources": [
        {
          "apiVersion": "2018-05-01",
          "name": "testMasterDeployment",
          "type": "Microsoft.Resources/deployments",
          "location": "West US",
          "properties": {
            "mode": "Incremental",
            "templateLink": {
              "uri": "[parameters('linkedTemplateUri')]",
              "contentVersion": "1.0.0.0"
            },
            "parameters": {
              "tagValues": { "value": {
                  "TagA": "A-Tag",
                  "TagB": "B-Tag"
              }}
            }
          }
        }
      ],
      "outputs": {
        "messageFromMaster00": {
          "type": "string",
          "value": "Master-00 reporting"
        },
        "messageFromLinkedTemplate": {
          "type": "object",
          "value": "[reference('testMasterDeployment').outputs.messageFromNestedTemplate]"
        }
      }
    }
    

    {
      "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "rgName": {
          "defaultValue": "Zxy-Test",
          "type": "string"
        },
        "location": {
          "defaultValue": "West US",
          "type": "string"
        },
        "tagValues": {
          "type": "object"
        }
      },
      "variables": {
        "storageName": "linktestdata"
      },
      "resources": [
        {
          "type": "Microsoft.Resources/resourceGroups",
          "apiVersion": "2018-05-01",
          "location": "[parameters('location')]",
          "name": "[parameters('rgName')]",
          "properties": {},
          "tags": "[parameters('tagValues')]"
        },
        {
          "type": "Microsoft.Resources/deployments",
          "apiVersion": "2017-05-10",
          "name": "storageDeployment",
          "resourceGroup": "[parameters('rgName')]",
          "dependsOn": [
            "[resourceId('Microsoft.Resources/resourceGroups/', parameters('rgName'))]"
          ],
          "properties": {
            "mode": "Incremental",
            "template": {
              "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
              "contentVersion": "1.0.0.0",
              "resources": [
                {
                  "type": "Microsoft.Storage/storageAccounts",
                  "apiVersion": "2017-10-01",
                  "name": "[variables('storageName')]",
                  "location": "[parameters('location')]",
                  "tags": "[parameters('tagValues')]",
                  "kind": "StorageV2",
                  "sku": {
                    "name": "Standard_LRS"
                  }
                }
              ],
              "outputs": {
                "storageAccount": {
                  "type": "string",
                  "value": "[variables('storageName')]"
                },
                "resourceInfo0": {
                  "type": "string",
                  "value": "[resourceId('Microsoft.Storage/storageAccounts', variables('storageName'))]"
                },
                "resourceInfo1": {
                  "type": "string",
                  "value": "[resourceId(resourceGroup().name, 'Microsoft.Storage/storageAccounts', variables('storageName'))]"
                }
              }
            }
          }
        }
      ],
      "outputs": {
        "messageFromNestedTemplate": {
          "type": "object",
          "value": "[reference('storageDeployment').outputs]"
        }
      }
    }
    

    $uri = 'https://<containername>.blob.core.windows.net/azure-resource-templates/TestMaster.json'
    $linkedTemplateUri = 'https://<containername>.blob.core.windows.net/azure-resource-templates/TestLinked0.json'
    New-AzureRmDeployment -Location 'West US' -TemplateUri $uri -linkedTemplateUri $linkedTemplateUri
    
    1 回复  |  直到 7 年前
        1
  •  4
  •   Stringfellow    7 年前

    我现在找到了Microsoft文档,其中说明“不支持resourceGroup()函数” https://docs.microsoft.com/en-us/azure/azure-resource-manager/deploy-to-subscription#using-template-functions . 我使用的commandlet是 New-AzureRmDeployment