Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo descrive come definire i valori di output nel modello di Azure Resource Manager .This article describe how to define output values in your Azure Resource Manager template (ARM template). Gli output vengono usati quando è necessario restituire valori dalle risorse distribuite.
Il formato di ogni valore di output deve essere risolto in uno dei tipi di dati.
Suggerimento
È consigliabile usare Bicep perché offre le stesse funzionalità dei modelli arm e la sintassi è più facile da usare. Per altre informazioni, vedere output.
Sei limitato a 64 output in un modello. Per altre informazioni, vedere Limiti dei modelli.
Definire i valori di output
Nell'esempio seguente viene illustrato come restituire una proprietà da una risorsa distribuita. Aggiungere la sezione output al modello. Il valore di output ottiene il nome di dominio completo per un indirizzo IP pubblico:
"outputs": {
"hostname": {
"type": "string",
"value": "[reference(resourceId('Microsoft.Network/publicIPAddresses', variables('publicIPAddressName'))).dnsSettings.fqdn]"
},
}
Se è necessario restituire una proprietà con un trattino nel nome, usare le parentesi quadre intorno al nome anziché la notazione punto. Ad esempio, usare ['property-name'] anziché .property-name.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"variables": {
"user": {
"user-name": "Test Person"
}
},
"resources": [
],
"outputs": {
"nameResult": {
"type": "string",
"value": "[variables('user')['user-name']]"
}
}
}
Output condizionale
È possibile usare l'elemento condition per restituire in modo condizionale un valore. In genere, si usa un output condizionale quando è stata distribuita una risorsa in modo condizionale. Nell'esempio seguente viene illustrato come restituire in modo condizionale l'ID risorsa per un indirizzo IP pubblico in base a se ne è stato distribuito uno nuovo:
"outputs": {
"resourceID": {
"condition": "[equals(parameters('publicIpNewOrExisting'), 'new')]",
"type": "string",
"value": "[resourceId('Microsoft.Network/publicIPAddresses', parameters('publicIPAddresses_name'))]"
}
}
Per un semplice esempio di output condizionale, vedere modello di output condizionale.
Numero dinamico di output
In alcuni scenari non si conosce il numero di istanze di un valore che è necessario restituire durante la creazione del modello. È possibile restituire un numero variabile di valori usando l'output iterativo. Aggiungere l'elemento copy per scorrere un output:
"outputs": {
"storageEndpoints": {
"type": "array",
"copy": {
"count": "[parameters('storageCount')]",
"input": "[reference(concat(copyIndex(), variables('baseName'))).primaryEndpoints.blob]"
}
}
}
Per altre informazioni, vedere Iterazione di output nei modelli di Resource Manager.
Modelli collegati
È possibile distribuire modelli correlati usando i modelli collegati. Per recuperare il valore di output da un modello collegato, usare la reference funzione nel modello padre. La sintassi nel modello padre è:
"[reference('<deploymentName>').outputs.<propertyName>.value]"
L'esempio seguente illustra come impostare l'indirizzo IP in un servizio di bilanciamento del carico recuperando un valore da un modello collegato:
"publicIPAddress": {
"id": "[reference('linkedTemplate').outputs.resourceID.value]"
}
Se il nome della proprietà ha un trattino, usare parentesi quadre intorno al nome anziché alla notazione punto.
"publicIPAddress": {
"id": "[reference('linkedTemplate').outputs['resource-ID'].value]"
}
Non è possibile usare la reference funzione nella sezione output di un modello annidato. Per restituire i valori per una risorsa distribuita in un modello annidato, convertire il modello annidato in un modello collegato.
- Il modello public-IP-address crea un indirizzo IP pubblico e restituisce l'ID risorsa.
- Il modello di bilanciamento del carico è collegato al modello precedente. Usa l'ID risorsa nell'output durante la creazione del bilanciamento del carico.
Modello di esempio
Il modello seguente non distribuisce alcuna risorsa. Illustra alcuni modi per restituire output di tipi diversi:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [],
"outputs": {
"stringOutput": {
"type": "string",
"value": "[deployment().name]"
},
"integerOutput": {
"type": "int",
"value": "[length(environment().authentication.audiences)]"
},
"booleanOutput": {
"type": "bool",
"value": "[contains(deployment().name, 'demo')]"
},
"arrayOutput": {
"type": "array",
"value": "[environment().authentication.audiences]"
},
"objectOutput": {
"type": "object",
"value": "[subscription()]"
}
}
}
Recupera i valori di output
Quando la distribuzione ha esito positivo, i valori di output vengono restituiti automaticamente nei risultati della distribuzione.
Per ottenere i valori di output dalla cronologia di distribuzione, è possibile usare lo script.
(Get-AzResourceGroupDeployment `
-ResourceGroupName <resource-group-name> `
-Name <deployment-name>).Outputs.resourceID.value
Ordinare gli oggetti negli output
In JSON, un oggetto è una raccolta non ordinata di zero o più coppie chiave/valore. L'ordinamento può variare, a seconda delle implementazioni. Ad esempio, la funzione Bicep items() dispone gli oggetti in ordine alfabetico. In altre posizioni, l'ordine originale può essere mantenuto. Dato questo non determinismo, è preferibile evitare di fare ipotesi sull'ordine delle chiavi oggetto durante la scrittura del codice, che interagisce con i parametri e gli output delle distribuzioni.
Passaggi successivi
Per informazioni sulle proprietà disponibili per gli output, vedere la struttura e la sintassi dei modelli arm.