Kimenetek a Bicepben
Ez a cikk bemutatja, hogyan definiálhat kimeneti értékeket egy Bicep-fájlban. A kimeneteket akkor használja, ha az üzembe helyezett erőforrások értékeit kell visszaadnia. Egy Bicep-fájlban legfeljebb 64 kimenet lehet. További információ: Sablonkorlátok.
Kimeneti értékek definiálása
A kimeneti érték meghatározásának szintaxisa a következő:
output <name> <data-type or type-expression> = <value>
A kimenetek neve megegyezhet egy paraméterrel, változóval, modullal vagy erőforrással. Minden kimeneti értéknek az egyik adattípusra vagy felhasználó által definiált adattípus-kifejezésre kell feloldania.
Az alábbi példa bemutatja, hogyan lehet visszaadni egy tulajdonságot egy üzembe helyezett erőforrásból. A példában publicIP
a Bicep-fájlban üzembe helyezett nyilvános IP-cím szimbolikus neve. A kimeneti érték lekéri a nyilvános IP-cím teljes tartománynevét.
output hostname string = publicIP.properties.dnsSettings.fqdn
A következő példa bemutatja, hogyan lehet különböző típusú kimeneteket visszaadni.
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()
Ha olyan tulajdonságot kell kihoznia, amelynek kötőjele van a névben, használjon szögletes zárójeleket a név körül pontjelezés helyett. Például használja ahelyett, hogy ['property-name']
.property-name
.
var user = {
'user-name': 'Test Person'
}
output stringOutput string = user['user-name']
Az alábbi példa a típuskifejezés használatát mutatja be:
param foo 'a' | 'b' = 'a'
output out 'a' | 'b' = foo
További információ: Felhasználó által definiált adattípusok.
Feltételes kimenet
Ha a visszaadandó érték az üzembe helyezés egyik feltételétől függ, használja az operátort ?
.
output <name> <data-type> = <condition> ? <true-value> : <false-value>
Általában feltételes kimenetet használ, amikor feltételesen üzembe helyezett egy erőforrást. Az alábbi példa bemutatja, hogyan lehet feltételesen visszaadni egy nyilvános IP-cím erőforrás-azonosítóját attól függően, hogy üzembe helyezett-e egy újat.
Ha feltételes kimenetet szeretne megadni a Bicepben, használja az operátort ?
. Az alábbi példa egy feltételtől függően egy végpont URL-címét vagy egy üres sztringet ad vissza.
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 : ''
Kimenetek dinamikus száma
Bizonyos esetekben nem tudja, hogy hány példányt kell visszaadnia a sablon létrehozásakor. A kifejezéssel for
változó számú értéket adhat vissza.
output <name> <data-type> = [for <item> in <collection>: {
...
}]
Az alábbi példa egy tömbön keresztüli iterálást mutat be.
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
}]
A hurkokkal kapcsolatos további információkért lásd a Bicep iteratív ciklusait.
Modulok kimenetei
Egy modul kimeneti értékének lekéréséhez használja a következő szintaxist:
<module-name>.outputs.<property-name>
Az alábbi példa bemutatja, hogyan állíthatja be az IP-címet egy terheléselosztón egy modulból származó érték beolvasásával.
module publicIP 'modules/public-ip-address.bicep' = {
name: 'public-ip-address-module'
}
resource loadBalancer 'Microsoft.Network/loadBalancers@2020-11-01' = {
name: loadBalancerName
location: location
properties: {
frontendIPConfigurations: [
{
name: 'name'
properties: {
publicIPAddress: {
id: publicIP.outputs.resourceId
}
}
}
]
// ...
}
}
Kimeneti értékek lekérése
Ha az üzembe helyezés sikeres, a rendszer automatikusan visszaadja a kimeneti értékeket az üzembe helyezés eredményeiben.
Az üzembe helyezési előzmények kimeneti értékeinek lekéréséhez használhatja az Azure CLI-t vagy az Azure PowerShell-szkriptet.
(Get-AzResourceGroupDeployment `
-ResourceGroupName <resource-group-name> `
-Name <deployment-name>).Outputs.resourceID.value
Objektumrendezés kimenetekben
A JSON-ban az objektum nulla vagy több kulcs/érték pár rendezetlen gyűjteménye. A rendezés a megvalósítástól függően eltérő lehet. A Bicep items() függvény például betűrendbe rendezi az objektumokat. Más helyeken az eredeti sorrend megőrizhető. Emiatt a nem determinizmus miatt ne feltételezze az objektumkulcsok sorrendjét a kód írásakor, amely az üzembehelyezési paraméterekkel és kimenetekkel kommunikál.
További lépések
- A kimenetek elérhető tulajdonságairól a Bicep szerkezetének és szintaxisának ismertetése című témakörben olvashat.