Výstupy v bicep
Tento článek popisuje, jak v souboru bicep definovat výstupní hodnoty. Výstupy použijete, když potřebujete vrátit hodnoty z nasazených prostředků.
Definovat výstupní hodnoty
Syntaxe pro definování výstupní hodnoty je:
output <name> <data-type> = <value>
Výstup může mít stejný název jako parametr, proměnná, modul nebo prostředek. Každá výstupní hodnota musí být přeložena na jeden z datových typů.
Následující příklad ukazuje, jak vrátit vlastnost z nasazeného prostředku. V tomto příkladu publicIP je symbolický název pro veřejnou IP adresu, která je nasazena v souboru bicep. Výstupní hodnota získá plně kvalifikovaný název domény pro veřejnou IP adresu.
output hostname string = publicIP.properties.dnsSettings.fqdn
Další příklad ukazuje, jak vracet výstupy různých typů.
output stringOutput string = deployment().name
output integerOutput int = length(environment().authentication.audiences)
output booleanOutput bool = contains(deployment().name, 'demo')
output arrayOutput array = environment().authentication.audiences
output objectOutput object = subscription()
Pokud potřebujete výstup vlastnosti, která má v názvu pomlčku, místo zápisu tečky použijte hranaté závorky kolem názvu. Použijte například ['property-name'] místo .property-name .
var user = {
'user-name': 'Test Person'
}
output stringOutput string = user['user-name']
Podmíněný výstup
Pokud hodnota, která má být vrácena, závisí na podmínce v nasazení, použijte ? operátor.
output <name> <data-type> = <condition> ? <true-value> : <false-value>
Obvykle používáte podmíněný výstup, když jste provedli podmíněně nasazení prostředku. Následující příklad ukazuje, jak podmíněně vracet ID prostředku pro veřejnou IP adresu na základě toho, zda byla nasazena nová.
K určení podmíněného výstupu v bicep použijte ? operátor. Následující příklad buďto vrátí adresu URL koncového bodu nebo prázdný řetězec v závislosti na podmínce.
param deployStorage bool = true
param storageName string
param location string = resourceGroup().location
resource myStorageAccount 'Microsoft.Storage/storageAccounts@2019-06-01' = if (deployStorage) {
name: storageName
location: location
kind: 'StorageV2'
sku:{
name:'Standard_LRS'
tier: 'Standard'
}
properties: {
accessTier: 'Hot'
}
}
output endpoint string = deployStorage ? myStorageAccount.properties.primaryEndpoints.blob : ''
Dynamický počet výstupů
V některých scénářích neznáte počet instancí hodnoty, které potřebujete vrátit při vytváření šablony. Proměnný počet hodnot můžete vracet pomocí for výrazu.
output <name> <data-type> = [for <item> in <collection>: {
...
}]
Následující příklad provede iteraci v poli.
param nsgLocation string = resourceGroup().location
param orgNames array = [
'Contoso'
'Fabrikam'
'Coho'
]
resource nsg 'Microsoft.Network/networkSecurityGroups@2020-06-01' = [for name in orgNames: {
name: 'nsg-${name}'
location: nsgLocation
}]
output deployedNSGs array = [for (name, i) in orgNames: {
orgName: name
nsgName: nsg[i].name
resourceId: nsg[i].id
}]
Další informace o smyčkách naleznete v tématu iterativní smyčky v bicep.
Výstupy z modulů
K získání výstupní hodnoty z modulu použijte následující syntaxi:
<module-name>.outputs.<property-name>
Následující příklad ukazuje, jak nastavit IP adresu v nástroji pro vyrovnávání zatížení načtením hodnoty z modulu. Název modulu je publicIP .
publicIPAddress: {
id: publicIP.outputs.resourceID
}
Získat výstupní hodnoty
Po úspěšném nasazení se výstupní hodnoty automaticky vrátí do výsledků nasazení.
pokud chcete získat výstupní hodnoty z historie nasazení, můžete použít rozhraní příkazového řádku Azure nebo skript Azure PowerShell.
(Get-AzResourceGroupDeployment `
-ResourceGroupName <resource-group-name> `
-Name <deployment-name>).Outputs.resourceID.value
Další kroky
- Další informace o dostupných vlastnostech výstupů naleznete v tématu pochopení struktury a syntaxe bicep.