Funzioni ambito per i modelli di ARM

Resource Manager fornisce le funzioni seguenti per ottenere i valori relativi all’ambito di distribuzione nel tuo modello di Azure Resource Manager (modello di ARM):

Per ottenere valori dai parametri, dalle variabili o dalla distribuzione corrente, vedere Funzioni dei valori della distribuzione.

Suggerimento

È consigliabile Bicep perché offre le stesse funzionalità dei modelli di ARM e la sintassi è più semplice da usare. Per altre informazioni, vedi funzioni ambito .

managementGroup

managementGroup()

Restituisce un oggetto con proprietà del gruppo di gestione nella distribuzione corrente.

In Bicep, usa la funzione di ambito managementGroup .

Osservazioni:

managementGroup() può essere usato solo nelle distribuzioni di un gruppo di gestione. Restituisce il gruppo di gestione corrente per l'operazione di distribuzione. Usare per ottenere le proprietà per il gruppo di gestione corrente.

Valore restituito

Un oggetto con le proprietà per il gruppo di gestione corrente.

Esempio di gruppo di gestione

Nell'esempio seguente vengono restituite proprietà per il gruppo di gestione corrente.

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

Il risultato è il seguente:

"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"
  }
}

Nell'esempio seguente viene creato un nuovo gruppo di gestione e viene usata questa funzione per impostare il gruppo di gestione padre.

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

Restituisce un oggetto che rappresenta il gruppo di risorse corrente.

In Bicep, usa la funzione di ambito resourceGroup .

Valore restituito

L'oggetto restituito è nel formato seguente:

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

La proprietà managedBy viene restituita solo per gruppi di risorse che contengono risorse gestite da un altro servizio. Per le applicazioni gestite, Databricks e il servizio Azure Kubernetes, il valore della proprietà è l'ID della risorsa di gestione.

Osservazioni:

La funzione resourceGroup() non può essere usata in un modello che viene distribuito a livello di sottoscrizione. Può essere usata solo nei modelli distribuiti in un gruppo di risorse. È possibile usare la funzione resourceGroup() in un modello collegato o annidato (con ambito interno) destinato a un gruppo di risorse, anche quando il modello padre viene distribuito nella sottoscrizione. In tale scenario, il modello collegato o annidato viene distribuito al livello del gruppo di risorse. Per altre informazioni sulla destinazione di un gruppo di risorse in una distribuzione a livello di sottoscrizione, vedere Distribuire le risorse di Azure in più di una sottoscrizione o gruppo di risorse.

Un utilizzo comune della funzione resourceGroup consiste nel creare risorse nello stesso percorso del gruppo di risorse. L'esempio seguente usa la posizione del gruppo di risorse per un valore di parametro predefinito.

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

Puoi anche usare la funzione resourceGroup per applicare tag a una risorsa dal gruppo di risorse. Per altre informazioni, vedere Applicare tag da un gruppo di risorse.

Quando usi i modelli annidati per distribuire più gruppi di risorse, puoi specificare l'ambito per la valutazione della funzione resourceGroup . Per altre informazioni, vedere Distribuire le risorse di Azure in più gruppi di sottoscrizioni e risorse.

Esempio di gruppo di risorse

L’esempio seguente restituisce le proprietà del gruppo di risorse.

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

L'esempio precedente restituisce un oggetto nel formato seguente:

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

sottoscrizione

subscription()

Restituisce i dettagli sulla sottoscrizione per la distribuzione corrente.

In Bicep, usa la funzione di ambito sottoscrizione .

Valore restituito

La funzione restituisce il formato seguente:

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

Osservazioni:

Quando si usano i modelli annidati per distribuire più sottoscrizioni è possibile specificare l'ambito per la valutazione della funzione subscription. Per altre informazioni, vedere Distribuire le risorse di Azure in più gruppi di sottoscrizioni e risorse.

Esempio della funzione subscription

L'esempio seguente mostra la funzione subscription chiamata nella sezione 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()]"
    }
  }
}

tenant

tenant()

Restituisce il tenant dell'utente.

In Bicep, usa la funzione ambito tenant .

Osservazioni:

tenant() può essere usato con qualsiasi ambito di distribuzione. Restituisce sempre il tenant corrente. Usa questa funzione per ottenere le proprietà per il tenant corrente.

Quando imposti l'ambito per un modello collegato o una risorsa di estensione, usa la sintassi : "scope": "/".

Valore restituito

Un oggetto con proprietà relative al tenant corrente.

Esempio di tenant

Nell'esempio seguente vengono restituite le proprietà per un tenant.

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

Il risultato è il seguente:

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

Passaggi successivi