Bıcep içindeki çıkışlar
Bu makalede, bir bicep dosyasında çıkış değerlerinin nasıl tanımlanacağı açıklanır. Dağıtılan kaynaklardan değer döndürihtiyacınız olduğunda çıktıları kullanırsınız.
Çıkış değerlerini tanımla
Bir çıkış değeri tanımlamak için sözdizimi şöyledir:
output <name> <data-type> = <value>
Bir çıktı bir parametre, değişken, modül veya kaynakla aynı ada sahip olabilir. Her çıkış değeri, veri türlerindenbirine çözümlenmelidir.
Aşağıdaki örnek, dağıtılan bir kaynaktan bir özelliğin nasıl dönegösterdiğini gösterir. Örnekte, publicIP Bıcep dosyasına dağıtılan bir genel IP adresinin sembolik adıdır. Çıkış değeri, genel IP adresi için tam etki alanı adını alır.
output hostname string = publicIP.properties.dnsSettings.fqdn
Sonraki örnekte, farklı türlerin çıktılarının nasıl döndürülayarlanacağı gösterilmektedir.
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()
Adında bir kısa çizgi olan bir özelliğin çıktısını almanız gerekiyorsa, adın etrafında nokta gösterimi yerine köşeli ayraç kullanın. Örneğin, yerine kullanın ['property-name'] .property-name .
var user = {
'user-name': 'Test Person'
}
output stringOutput string = user['user-name']
Koşullu çıkış
Döndürülecek değer dağıtımdaki bir koşula bağlı olduğunda ? işlecini kullanın.
output <name> <data-type> = <condition> ? <true-value> : <false-value>
Genellikle bir kaynağı koşullu olarak dağıttığınızda koşullu bir çıkış kullanırsınız. Aşağıdaki örnek, bir genel IP adresi için kaynak KIMLIĞININ, yeni bir birinin dağıtılıp dağıtıldığına göre nasıl koşullu olarak döndürülüp döndürülmeyeceğini gösterir.
Bıcep 'de koşullu çıkış belirtmek için ? işlecini kullanın. Aşağıdaki örnek, bir koşula bağlı olarak bir uç nokta URL 'SI ya da boş bir dize döndürür.
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 : ''
Dinamik çıkış sayısı
Bazı senaryolarda, şablonu oluştururken döndürmeniz gereken bir değerin örnek sayısını bilemezsiniz. İfadesini kullanarak, değişken sayıda değer döndürebilirsiniz for .
output <name> <data-type> = [for <item> in <collection>: {
...
}]
Aşağıdaki örnek bir dizi üzerinde yinelenir.
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
}]
Döngüler hakkında daha fazla bilgi için bkz. Bıcep 'de yinelemeli döngüler.
Modüllerden çıkış
Bir modülden çıkış değeri almak için aşağıdaki sözdizimini kullanın:
<module-name>.outputs.<property-name>
Aşağıdaki örnek, bir modülden bir değer alarak yük dengeleyicide IP adresinin nasıl ayarlanacağını gösterir. Modülün adı publicIP .
publicIPAddress: {
id: publicIP.outputs.resourceID
}
Çıkış değerlerini al
Dağıtım başarılı olduğunda, çıkış değerleri dağıtım sonuçlarında otomatik olarak döndürülür.
dağıtım geçmişinden çıkış değerleri almak için Azure clı veya Azure PowerShell betiği kullanabilirsiniz.
(Get-AzResourceGroupDeployment `
-ResourceGroupName <resource-group-name> `
-Name <deployment-name>).Outputs.resourceID.value
Sonraki adımlar
- Çıktılar için kullanılabilen özellikler hakkında bilgi edinmek için bkz. Bıcep yapısını ve sözdizimini anlama.