Utdata i Bicep
I den här artikeln beskrivs hur du definierar utdatavärden i en Bicep-fil. Du använder utdata när du behöver returnera värden från de distribuerade resurserna.
Definiera utdatavärden
Syntaxen för att definiera ett utdatavärde är:
output <name> <data-type> = <value>
Utdata kan ha samma namn som en parameter, variabel, modul eller resurs. Varje utdatavärde måste matchas mot en av datatyperna.
I följande exempel visas hur du returnerar en egenskap från en distribuerad resurs. I det här exemplet publicIP är det symboliska namnet för en offentlig IP-adress som distribueras i Bicep-filen. Utdatavärdet hämtar det fullständigt kvalificerade domännamnet för den offentliga IP-adressen.
output hostname string = publicIP.properties.dnsSettings.fqdn
I nästa exempel visas hur du returnerar utdata av olika typer.
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()
Om du behöver mata ut en egenskap som har ett bindestreck i namnet använder du hakparenteser runt namnet i stället för punktnotation. Använd till exempel i ['property-name'] stället för .property-name .
var user = {
'user-name': 'Test Person'
}
output stringOutput string = user['user-name']
Villkorliga utdata
När värdet som ska returneras beror på ett villkor i distributionen använder du ? operatorn .
output <name> <data-type> = <condition> ? <true-value> : <false-value>
Normalt använder du villkorsstyrda utdata när du har villkorligt distribuerat en resurs. I följande exempel visas hur du villkorligt returnerar resurs-ID:t för en offentlig IP-adress baserat på om en ny har distribuerats.
Om du vill ange villkorliga utdata i Bicep använder du ? operatorn . I följande exempel returneras antingen en slutpunkts-URL eller en tom sträng beroende på ett villkor.
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 : ''
Dynamiskt antal utdata
I vissa fall vet du inte hur många instanser av ett värde som du måste returnera när du skapar mallen. Du kan returnera ett variabelt antal värden med hjälp av for uttrycket .
output <name> <data-type> = [for <item> in <collection>: {
...
}]
Följande exempel itererar över en matris.
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
}]
Mer information om loopar finns i Iterativa loopar i Bicep.
Utdata från moduler
Om du vill hämta ett utdatavärde från en modul använder du följande syntax:
<module-name>.outputs.<property-name>
I följande exempel visas hur du anger IP-adressen för en lastbalanserare genom att hämta ett värde från en modul. Namnet på modulen är publicIP .
publicIPAddress: {
id: publicIP.outputs.resourceID
}
Hämta utdatavärden
När distributionen lyckas returneras utdatavärdena automatiskt i resultatet av distributionen.
Om du vill hämta utdatavärden från distributionshistoriken kan du använda Azure CLI Azure PowerShell skript.
(Get-AzResourceGroupDeployment `
-ResourceGroupName <resource-group-name> `
-Name <deployment-name>).Outputs.resourceID.value
Nästa steg
- Mer information om tillgängliga egenskaper för utdata finns i Förstå strukturen och syntaxen för Bicep.