Funzioni di distribuzione per i modelli di Resource Manager

Resource Manager fornisce le funzioni seguenti per ottenere valori correlati alla distribuzione corrente del modello di Azure Resource Manager (modello ARM):

Per ottenere valori da risorse, gruppi di risorse o sottoscrizioni, vedere Funzioni delle risorse.

Suggerimento

È consigliabile Usare Bicep perché offre le stesse funzionalità dei modelli di Resource Manager e la sintassi è più semplice da usare. Per altre informazioni, vedere Funzioni di distribuzione .

distribuzione

deployment()

Restituisce informazioni sull'operazione di distribuzione corrente.

In Bicep usare la funzione di distribuzione .

Valore restituito

Questa funzione restituisce l'oggetto che viene passato durante la distribuzione. Le proprietà nell'oggetto restituito differiscono in base al fatto che si sia:

  • distribuzione di un modello o di una specifica del modello.
  • distribuzione di un modello che è un file locale o la distribuzione di un modello a cui si accede tramite un URI.
  • distribuzione in un gruppo di risorse o distribuzione in uno degli altri ambiti (sottoscrizione di Azure, gruppo di gestione o tenant).

Quando si distribuisce un modello locale in un gruppo di risorse: la funzione restituisce il formato seguente:

{
  "name": "",
  "properties": {
    "template": {
      "$schema": "",
      "contentVersion": "",
      "parameters": {},
      "variables": {},
      "resources": [],
      "outputs": {}
    },
    "templateHash": "",
    "parameters": {},
    "mode": "",
    "provisioningState": ""
  }
}

Quando si distribuisce un modello remoto in un gruppo di risorse: la funzione restituisce il formato seguente:

{
  "name": "",
  "properties": {
    "templateLink": {
      "uri": ""
    },
    "template": {
      "$schema": "",
      "contentVersion": "",
      "parameters": {},
      "variables": {},
      "resources": [],
      "outputs": {}
    },
    "templateHash": "",
    "parameters": {},
    "mode": "",
    "provisioningState": ""
  }
}

Quando si distribuisce una specifica di modello in un gruppo di risorse: la funzione restituisce il formato seguente:

{
  "name": "",
  "properties": {
    "templateLink": {
      "id": ""
    },
    "template": {
      "$schema": "",
      "contentVersion": "",
      "parameters": {},
      "variables": {},
      "resources": [],
      "outputs": {}
    },
    "templateHash": "",
    "parameters": {},
    "mode": "",
    "provisioningState": ""
  }
}

Quando si distribuisce in una sottoscrizione di Azure, un gruppo di gestione o un tenant, l'oggetto restituito include una location proprietà. La proprietà location è inclusa quando si distribuisce un modello locale o un modello esterno. Il formato è:

{
  "name": "",
  "location": "",
  "properties": {
    "template": {
      "$schema": "",
      "contentVersion": "",
      "resources": [],
      "outputs": {}
    },
    "templateHash": "",
    "parameters": {},
    "mode": "",
    "provisioningState": ""
  }
}

Quando si distribuisce un modello languageVersion 2.0 , la deployment funzione restituisce un subset limitato di proprietà:

{
  "name": "",
  "location": "",
  "properties": {
    "template": {
      "contentVersion": ""
    },
    "templateLink": {
      "id": "",
      "uri": ""
    }
  }
}

Commenti

È possibile usare deployment() per collegare un altro modello in base all'URI del modello padre.

"variables": {
  "sharedTemplateUrl": "[uri(deployment().properties.templateLink.uri, 'shared-resources.json')]"
}

Se si ridistribuisce un modello dalla cronologia di distribuzione nel portale, il modello viene distribuito come file locale. La proprietà templateLink non viene restituita nella funzione di distribuzione. Se il modello si basa su templateLink per costruire un collegamento a un altro modello, non usare il portale per la ridistribuzione. Usare invece i comandi usati in origine per distribuire il modello.

Esempio

Nell'esempio seguente viene restituito un oggetto di distribuzione.

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

L'esempio precedente restituisce l'oggetto seguente:

{
  "name": "deployment",
  "properties": {
    "template": {
      "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
      "contentVersion": "1.0.0.0",
      "resources": [],
      "outputs": {
        "deploymentOutput": {
          "type": "Object",
          "value": "[deployment()]"
        }
      }
    },
    "templateHash": "13135986259522608210",
    "parameters": {},
    "mode": "Incremental",
    "provisioningState": "Accepted"
  }
}

Per una distribuzione della sottoscrizione, nell'esempio seguente viene restituito un oggetto di distribuzione.

{
  "$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {},
  "variables": {},
  "resources": [],
  "outputs": {
    "exampleOutput": {
      "type": "object",
      "value": "[deployment()]"
    }
  }
}

ambiente

environment()

Restituisce informazioni sull'ambiente di Azure usato per la distribuzione.

In Bicep usare la funzione di ambiente .

Commenti

Per visualizzare un elenco di ambienti registrati per l'account, usare az cloud list o Get-AzEnvironment.

Valore restituito

Questa funzione restituisce le proprietà per l'ambiente di Azure corrente. Nell'esempio seguente vengono illustrate le proprietà per Azure globale. I cloud sovrani possono restituire proprietà leggermente diverse.

{
  "name": "",
  "gallery": "",
  "graph": "",
  "portal": "",
  "graphAudience": "",
  "activeDirectoryDataLake": "",
  "batch": "",
  "media": "",
  "sqlManagement": "",
  "vmImageAliasDoc": "",
  "resourceManager": "",
  "authentication": {
    "loginEndpoint": "",
    "audiences": [
      "",
      ""
    ],
    "tenant": "",
    "identityProvider": ""
  },
  "suffixes": {
    "acrLoginServer": "",
    "azureDatalakeAnalyticsCatalogAndJob": "",
    "azureDatalakeStoreFileSystem": "",
    "azureFrontDoorEndpointSuffix": "",
    "keyvaultDns": "",
    "sqlServerHostname": "",
    "storage": ""
  }
}

Esempio

Il modello di esempio seguente restituisce l'oggetto ambiente.

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

L'esempio precedente restituisce l'oggetto seguente quando viene distribuito in Azure globale:

{
  "name": "AzureCloud",
  "gallery": "https://gallery.azure.com/",
  "graph": "https://graph.windows.net/",
  "portal": "https://portal.azure.com",
  "graphAudience": "https://graph.windows.net/",
  "activeDirectoryDataLake": "https://datalake.azure.net/",
  "batch": "https://batch.core.windows.net/",
  "media": "https://rest.media.azure.net",
  "sqlManagement": "https://management.core.windows.net:8443/",
  "vmImageAliasDoc": "https://raw.githubusercontent.com/Azure/azure-rest-api-specs/master/arm-compute/quickstart-templates/aliases.json",
  "resourceManager": "https://management.azure.com/",
  "authentication": {
    "loginEndpoint": "https://login.microsoftonline.com/",
    "audiences": [
      "https://management.core.windows.net/",
      "https://management.azure.com/"
    ],
    "tenant": "common",
    "identityProvider": "AAD"
  },
  "suffixes": {
    "acrLoginServer": ".azurecr.io",
    "azureDatalakeAnalyticsCatalogAndJob": "azuredatalakeanalytics.net",
    "azureDatalakeStoreFileSystem": "azuredatalakestore.net",
    "azureFrontDoorEndpointSuffix": "azurefd.net",
    "keyvaultDns": ".vault.azure.net",
    "sqlServerHostname": ".database.windows.net",
    "storage": "core.windows.net"
  }
}

parametri

parameters(parameterName)

Restituisce un valore di parametro. Il nome del parametro specificato deve essere definito nella sezione parameters del modello.

In Bicep, fare riferimento direttamente ai parametri usando i relativi nomi simbolici .

Parametri

Parametro Obbligatoria Tipo Descrizione
parameterName string Nome del parametro da restituire.

Valore restituito

Il valore del parametro specificato.

Commenti

Per impostare i valori delle risorse, si usano in genere i parametri. Nell'esempio seguente il nome del sito Web viene impostato sul valore del parametro passato durante la distribuzione.

"parameters": {
  "siteName": {
    "type": "string"
  }
}, "resources": [
  {
    "type": "Microsoft.Web/Sites",
    "apiVersion": "2016-08-01",
    "name": "[parameters('siteName')]",
    ...
  }
]

Esempio

L'esempio seguente mostra un uso semplificato della funzione parameters.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "stringParameter": {
      "type": "string",
      "defaultValue": "option 1"
    },
    "intParameter": {
      "type": "int",
      "defaultValue": 1
    },
    "objectParameter": {
      "type": "object",
      "defaultValue": {
        "one": "a",
        "two": "b"
      }
    },
    "arrayParameter": {
      "type": "array",
      "defaultValue": [ 1, 2, 3 ]
    },
    "crossParameter": {
      "type": "string",
      "defaultValue": "[parameters('stringParameter')]"
    }
  },
  "variables": {},
  "resources": [],
  "outputs": {
    "stringOutput": {
      "type": "string",
      "value": "[parameters('stringParameter')]"
    },
    "intOutput": {
      "type": "int",
      "value": "[parameters('intParameter')]"
    },
    "objectOutput": {
      "type": "object",
      "value": "[parameters('objectParameter')]"
    },
    "arrayOutput": {
      "type": "array",
      "value": "[parameters('arrayParameter')]"
    },
    "crossOutput": {
      "type": "string",
      "value": "[parameters('crossParameter')]"
    }
  }
}

L'output dell'esempio precedente con i valori predefiniti è il seguente:

Nome Type valore
stringOutput Stringa option 1
intOutput Int 1
objectOutput Oggetto {"one": "a", "two": "b"}
arrayOutput Array [1, 2, 3]
crossOutput Stringa option 1

Per altre informazioni sull'uso dei parametri, vedere Parametri nei modelli di Resource Manager.

variables

variables(variableName)

Restituisce il valore della variabile. Il nome della variabile specificato deve essere definito nella sezione variables del modello.

In Bicep, fare riferimento direttamente alle variabili usando i nomi simbolici.

Parametri

Parametro Obbligatoria Tipo Descrizione
variableName string Nome della variabile da restituire.

Valore restituito

Il valore della variabile specificata.

Commenti

Per semplificare il modello creando valori complessi una sola volta, si usano in genere le variabili. Nell'esempio seguente viene creato un nome univoco per un account di archiviazione.

"variables": {
  "storageName": "[concat('storage', uniqueString(resourceGroup().id))]"
},
"resources": [
  {
    "type": "Microsoft.Storage/storageAccounts",
    "name": "[variables('storageName')]",
    ...
  },
  {
    "type": "Microsoft.Compute/virtualMachines",
    "dependsOn": [
      "[variables('storageName')]"
    ],
    ...
  }
],

Esempio

Nell'esempio seguente vengono restituiti valori di variabile diversi.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {},
  "variables": {
    "var1": "myVariable",
    "var2": [ 1, 2, 3, 4 ],
    "var3": "[ variables('var1') ]",
    "var4": {
      "property1": "value1",
      "property2": "value2"
    }
  },
  "resources": [],
  "outputs": {
    "exampleOutput1": {
      "type": "string",
      "value": "[variables('var1')]"
    },
    "exampleOutput2": {
      "type": "array",
      "value": "[variables('var2')]"
    },
    "exampleOutput3": {
      "type": "string",
      "value": "[variables('var3')]"
    },
    "exampleOutput4": {
      "type": "object",
      "value": "[variables('var4')]"
    }
  }
}

L'output dell'esempio precedente con i valori predefiniti è il seguente:

Nome Type valore
exampleOutput1 Stringa myVariable
exampleOutput2 Array [1, 2, 3, 4]
exampleOutput3 Stringa myVariable
exampleOutput4 Oggetto {"property1": "value1", "property2": "value2"}

Per altre informazioni sull'uso delle variabili, vedere Variabili nel modello di Resource Manager.

Passaggi successivi