Uitvoer in Bicep

In dit artikel wordt beschreven hoe u uitvoerwaarden definieert in een Bicep-bestand. U gebruikt uitvoer wanneer u waarden van de geïmplementeerde resources moet retourneren.

Uitvoerwaarden definiëren

De syntaxis voor het definiëren van een uitvoerwaarde is:

output <name> <data-type> = <value>

Een uitvoer kan dezelfde naam hebben als een parameter, variabele, module of resource. Elke uitvoerwaarde moet worden opgelost naar een van de gegevenstypen.

In het volgende voorbeeld ziet u hoe u een eigenschap van een geïmplementeerde resource kunt retourneren. In het voorbeeld publicIP is de symbolische naam voor een openbaar IP-adres dat is geïmplementeerd in het Bicep-bestand. De uitvoerwaarde haalt de fully qualified domain name op voor het openbare IP-adres.

output hostname string = publicIP.properties.dnsSettings.fqdn

In het volgende voorbeeld ziet u hoe u uitvoer van verschillende typen retourneert.

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()

Als u een eigenschap met een afbreekstreeping in de naam wilt hebben, gebruikt u haakjes rond de naam in plaats van punt-notatie. Gebruik bijvoorbeeld in ['property-name'] plaats van .property-name .

var user = {
  'user-name': 'Test Person'
}

output stringOutput string = user['user-name']

Voorwaardelijke uitvoer

Wanneer de te retourneren waarde afhankelijk is van een voorwaarde in de implementatie, gebruikt u de ? operator .

output <name> <data-type> = <condition> ? <true-value> : <false-value>

Normaal gesproken gebruikt u voorwaardelijke uitvoer wanneer u een resource voorwaardelijk hebt geïmplementeerd. In het volgende voorbeeld ziet u hoe u de resource-id voor een openbaar IP-adres voorwaardelijk kunt retourneren op basis van het al dan niet geïmplementeerde nieuwe IP-adres.

Als u een voorwaardelijke uitvoer wilt opgeven in Bicep, gebruikt u de ? operator . Het volgende voorbeeld retourneert een eindpunt-URL of een lege tekenreeks, afhankelijk van een voorwaarde.

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 : ''

Dynamisch aantal uitvoer

In sommige scenario's weet u niet het aantal exemplaren van een waarde die u moet retourneren bij het maken van de sjabloon. U kunt een variabel aantal waarden retourneren met behulp van de for expressie .

output <name> <data-type> = [for <item> in <collection>: {
  ...
}]

In het volgende voorbeeld wordt een matrix doorgenomen.

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
}]

Zie Iteratieve lussen in Bicep voor meer informatie over lussen.

Uitvoer van modules

Gebruik de volgende syntaxis om een uitvoerwaarde van een module op te halen:

<module-name>.outputs.<property-name>

In het volgende voorbeeld ziet u hoe u het IP-adres op een load balancer door een waarde op te vragen uit een module. De naam van de module is publicIP .

publicIPAddress: {
  id: publicIP.outputs.resourceID
}

Uitvoerwaarden op halen

Wanneer de implementatie is geslaagd, worden de uitvoerwaarden automatisch geretourneerd in de resultaten van de implementatie.

Als u uitvoerwaarden wilt op halen uit de implementatiegeschiedenis, kunt u Azure CLI of een Azure PowerShell gebruiken.

(Get-AzResourceGroupDeployment `
  -ResourceGroupName <resource-group-name> `
  -Name <deployment-name>).Outputs.resourceID.value

Volgende stappen

  • Zie Inzicht in de structuur en syntaxis van Bicep voor meer informatie over de beschikbare eigenschappen voor uitvoer.