Funções de escopo para modelos ARM

O Resource Manager fornece as seguintes funções para obter valores de escopo de implantação em seu modelo do Azure Resource Manager (modelo ARM):

Para obter valores de parâmetros, variáveis ou da implantação atual, consulte Funções de valor de implantação.

Gorjeta

Recomendamos o Bicep porque ele oferece os mesmos recursos que os modelos ARM e a sintaxe é mais fácil de usar. Para saber mais, consulte Funções de escopo .

gestãoGrupo

managementGroup()

Retorna um objeto com propriedades do grupo de gerenciamento na implantação atual.

No Bicep, use a função de escopo managementGroup .

Observações

managementGroup()só pode ser usado em implantações de grupo de gerenciamento. Ele retorna o grupo de gerenciamento atual para a operação de implantação. Use para obter propriedades para o grupo de gerenciamento atual.

Valor devolvido

Um objeto com as propriedades do grupo de gerenciamento atual.

Exemplo de grupo de gerenciamento

O exemplo a seguir retorna propriedades para o grupo de gerenciamento atual.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-08-01/managementGroupDeploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "variables": {
    "mgInfo": "[managementGroup()]"
  },
  "resources": [],
  "outputs": {
    "mgResult": {
      "type": "object",
      "value": "[variables('mgInfo')]"
    }
  }
}

É devolvido:

"mgResult": {
  "type": "Object",
  "value": {
    "id": "/providers/Microsoft.Management/managementGroups/examplemg1",
    "name": "examplemg1",
    "properties": {
      "details": {
        "parent": {
          "displayName": "Tenant Root Group",
          "id": "/providers/Microsoft.Management/managementGroups/00000000-0000-0000-0000-000000000000",
          "name": "00000000-0000-0000-0000-000000000000"
        },
        "updatedBy": "00000000-0000-0000-0000-000000000000",
        "updatedTime": "2020-07-23T21:05:52.661306Z",
        "version": "1"
      },
      "displayName": "Example MG 1",
      "tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee"
    },
    "type": "/providers/Microsoft.Management/managementGroups"
  }
}

O próximo exemplo cria um novo grupo de gerenciamento e usa essa função para definir o grupo de gerenciamento pai.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-08-01/managementGroupDeploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "mgName": {
      "type": "string",
      "defaultValue": "[format('mg-{0}', uniqueString(newGuid()))]"
    }
  },
  "resources": [
    {
      "type": "Microsoft.Management/managementGroups",
      "apiVersion": "2020-05-01",
      "scope": "/",
      "name": "[parameters('mgName')]",
      "properties": {
        "details": {
          "parent": {
            "id": "[managementGroup().id]"
          }
        }
      }
    }
  ],
  "outputs": {
    "newManagementGroup": {
      "type": "string",
      "value": "[parameters('mgName')]"
    }
  }
}

resourceGroup

resourceGroup()

Retorna um objeto que representa o grupo de recursos atual.

No Bicep, use a função de escopo resourceGroup .

Valor devolvido

O objeto retornado está no seguinte formato:

{
  "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}",
  "name": "{resourceGroupName}",
  "type":"Microsoft.Resources/resourceGroups",
  "location": "{resourceGroupLocation}",
  "managedBy": "{identifier-of-managing-resource}",
  "tags": {
  },
  "properties": {
    "provisioningState": "{status}"
  }
}

A propriedade managedBy é retornada somente para grupos de recursos que contêm recursos gerenciados por outro serviço. Para Aplicativos Gerenciados, Databricks e AKS, o valor da propriedade é a ID do recurso de gerenciamento.

Observações

A resourceGroup() função não pode ser usada em um modelo implantado no nível de assinatura. Ele só pode ser usado em modelos que são implantados em um grupo de recursos. Você pode usar a resourceGroup() função em um modelo vinculado ou aninhado (com escopo interno) destinado a um grupo de recursos, mesmo quando o modelo pai é implantado na assinatura. Nesse cenário, o modelo vinculado ou aninhado é implantado no nível do grupo de recursos. Para obter mais informações sobre como direcionar um grupo de recursos em uma implantação em nível de assinatura, consulte Implantar recursos do Azure em mais de uma assinatura ou grupo de recursos.

Um uso comum da função resourceGroup é criar recursos no mesmo local que o grupo de recursos. O exemplo a seguir usa o local do grupo de recursos para um valor de parâmetro padrão.

"parameters": {
  "location": {
    "type": "string",
    "defaultValue": "[resourceGroup().location]"
  }
}

Você também pode usar a resourceGroup função para aplicar tags do grupo de recursos a um recurso. Para obter mais informações, consulte Aplicar tags do grupo de recursos.

Ao usar modelos aninhados para implantar em vários grupos de recursos, você pode especificar o escopo para avaliar a resourceGroup função. Para obter mais informações, consulte Implantar recursos do Azure em mais de uma assinatura ou grupo de recursos.

Exemplo de grupo de recursos

O exemplo a seguir retorna as propriedades do grupo de recursos.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [],
  "outputs": {
    "resourceGroupOutput": {
      "type": "object",
      "value": "[resourceGroup()]"
    }
  }
}

O exemplo anterior retorna um objeto no seguinte formato:

{
  "id": "/subscriptions/{subscription-id}/resourceGroups/examplegroup",
  "name": "examplegroup",
  "type":"Microsoft.Resources/resourceGroups",
  "location": "southcentralus",
  "properties": {
    "provisioningState": "Succeeded"
  }
}

subscrição

subscription()

Retorna detalhes sobre a assinatura para a implantação atual.

No Bicep, use a função de escopo de assinatura .

Valor devolvido

A função retorna o seguinte formato:

{
  "id": "/subscriptions/{subscription-id}",
  "subscriptionId": "{subscription-id}",
  "tenantId": "{tenant-id}",
  "displayName": "{name-of-subscription}"
}

Observações

Ao usar modelos aninhados para implantar em várias assinaturas, você pode especificar o escopo para avaliar a função de assinatura. Para obter mais informações, consulte Implantar recursos do Azure em mais de uma assinatura ou grupo de recursos.

Exemplo de subscrição

O exemplo a seguir mostra a função de assinatura chamada na seção outputs.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [],
  "outputs": {
    "subscriptionOutput": {
      "type": "object",
      "value": "[subscription()]"
    }
  }
}

inquilino

tenant()

Retorna o locatário do usuário.

No Bicep, use a função de escopo do locatário .

Observações

tenant() pode ser usado com qualquer escopo de implantação. Ele sempre retorna o locatário atual. Use essa função para obter propriedades para o locatário atual.

Ao definir o escopo de um modelo vinculado ou recurso de extensão, use a sintaxe: "scope": "/".

Valor devolvido

Um objeto com propriedades sobre o locatário atual.

Exemplo de locatário

O exemplo a seguir retorna as propriedades de um locatário.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "variables": {
    "tenantInfo": "[tenant()]"
  },
  "resources": [],
  "outputs": {
    "tenantResult": {
      "type": "object",
      "value": "[variables('tenantInfo')]"
    }
  }
}

É devolvido:

"tenantResult": {
  "type": "Object",
  "value": {
    "countryCode": "US",
    "displayName": "Contoso",
    "id": "/tenants/00000000-0000-0000-0000-000000000000",
    "tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee"
  }
}

Próximos passos