Compartir vía


Funciones de ámbito para plantillas de Resource Manager

Resource Manager ofrece las siguientes funciones para obtener valores de ámbito de implementación en la plantilla de Azure Resource Manager (plantilla de ARM):

Para obtener valores de parámetro, variables o la implementación actual, consulte Funciones con valores de implementación.

Sugerencia

Se recomienda Bicep porque ofrece las mismas funcionalidades que las plantillas de ARM, y la sintaxis es más fácil de usar. Para obtener más información, consulte las funciones de ámbito.

managementGroup

managementGroup()

Devuelve un objeto con propiedades del grupo de administración de la implementación actual.

En Bicep, use la función de ámbito managementGroup .

Comentarios

managementGroup() solo se puede usar en implementaciones de un grupo de administración. Devuelve el grupo de administración actual para la operación de implementación. Se usa para obtener propiedades para el grupo de administración actual.

Valor devuelto

Un objeto con las propiedades del grupo de administración actual.

Ejemplo de grupo de administración

En el ejemplo siguiente se devuelven las propiedades del grupo de administración actual.

{
  "$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')]"
    }
  }
}

Se devuelve lo siguiente:

"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": "00000000-0000-0000-0000-000000000000"
    },
    "type": "/providers/Microsoft.Management/managementGroups"
  }
}

En el ejemplo siguiente se crea un grupo de administración y se usa esta función para establecer el grupo de administración primario.

{
  "$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()

Devuelve un objeto que representa el grupo de recursos actual.

En Bicep, use la función de ámbito resourceGroup.

Valor devuelto

El objeto devuelto está en el formato siguiente:

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

La propiedad managedBy solo se devuelve para los grupos de recursos que contienen recursos administrados por otro servicio. En los casos de Managed Applications, Databricks y AKS, el valor de la propiedad es el identificador del recurso que realiza la administración.

Observaciones

La función resourceGroup() no se puede usar en una plantilla que está implementada en el nivel de suscripción. Solo puede usarse en las plantillas que se implementan en un grupo de recursos. Puede usar la resourceGroup()función en una plantilla vinculada o anidada (con ámbito interno) que tenga como destino un grupo de recursos, incluso cuando la plantilla primaria se implementa en la suscripción. En ese escenario, la plantilla vinculada o anidada se implementa en el nivel de grupo de recursos. Para más información sobre cómo establecer como destino un grupo de recursos en una implementación de nivel de suscripción, consulte Implementar recursos de Azure en más de una suscripción o un grupo de recursos.

Un uso común de la función resourceGroup es crear recursos en la misma ubicación que el grupo de recursos. En el ejemplo siguiente se utiliza la ubicación del grupo de recursos para un valor de parámetro predeterminado.

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

También puede usar la función resourceGroup para aplicar etiquetas del grupo de recursos a un recurso. Para más información, consulte Aplicación de etiquetas de un grupo de recursos.

Al usar plantillas anidadas para implementar en varios grupos de recursos, puede especificar el ámbito para evaluar la función resourceGroup. Para más información, consulte Implementación de recursos de Azure en varias suscripciones y grupos de recursos.

Ejemplo de grupo de recursos

En el ejemplo siguiente se devuelven las propiedades del 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()]"
    }
  }
}

El ejemplo anterior devuelve un objeto en el formato siguiente:

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

subscription

subscription()

Devuelve detalles sobre la suscripción para la implementación actual.

En Bicep, use la función de ámbito subscription.

Valor devuelto

La función devuelve el siguiente formato:

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

Observaciones

Al usar plantillas anidadas para implementar en varias suscripciones, puede especificar el ámbito para evaluar la función de suscripción. Para más información, consulte Implementación de recursos de Azure en varias suscripciones y grupos de recursos.

Ejemplo de suscripción

En el ejemplo siguiente se muestra la función de suscripción a la que se llama en la sección de salidas.

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

tenant

tenant()

Devuelve el inquilino del usuario.

En Bicep, use la función de ámbito tenant.

Comentarios

tenant() se puede usar con cualquier ámbito de implementación. Siempre devuelve el inquilino actual. Use esta función para obtener propiedades para el inquilino actual.

Al establecer el ámbito de un recurso de extensión o plantilla vinculada, use la sintaxis: "scope": "/".

Valor devuelto

Un objeto con propiedades sobre el inquilino actual.

Ejemplo de inquilino

En el ejemplo siguiente se devuelven las propiedades de un inquilino.

{
  "$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')]"
    }
  }
}

Se devuelve lo siguiente:

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

Pasos siguientes