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 di Resource Manager):

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

Suggerimento

È consigliabile Bicep perché offre le stesse funzionalità dei modelli di ARM e la sintassi è più semplice. 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 variano a seconda che si stia eseguendo:

  • distribuzione di un modello o di una specifica di modello.
  • distribuzione di un modello che è un file locale o la distribuzione di un modello a cui si accede tramite un URI.
  • la distribuzione in un gruppo di risorse o la 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": ""
  }
}

Se la distribuzione avviene in una sottoscrizione di Azure, in un gruppo di gestione o in un tenant, l'oggetto restituito include una proprietà location. 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": ""
    }
  }
}

Osservazioni:

È possibile usare deployment() per collegarsi a 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, l'esempio seguente restituisce un oggetto 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()]"
    }
  }
}

dell'ambiente di

environment()

Restituisce informazioni sull'ambiente di Azure usato per la distribuzione. La environment() funzione non è in grado di conoscere le configurazioni delle risorse. Può restituire solo un singolo suffisso DNS predefinito per ogni tipo di risorsa.

In Bicep usare la funzione environment .

Osservazioni:

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 Azure corrente. L'esempio seguente mostra le proprietà per Azure globale. I cloud sovrani potrebbero 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 è 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"
  }
}

parameters

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 Richiesto Type Descrizione
parameterName string Nome del parametro da restituire.

Valore restituito

Il valore del parametro specificato.

Osservazioni:

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 String option 1
intOutput Int 1
objectOutput Object {"one": "a", "two": "b"}
arrayOutput Matrice [1, 2, 3]
crossOutput String 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 relativi nomi simbolici.

Parametri

Parametro Richiesto Type Descrizione
variableName String Nome della variabile da restituire.

Valore restituito

Il valore della variabile specificata.

Osservazioni:

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 String myVariable
exampleOutput2 Matrice [1, 2, 3, 4]
exampleOutput3 String myVariable
exampleOutput4 Object {"property1": "value1", "property2": "value2"}

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

Passaggi successivi