Bicep'teki çıkışlar

Bu makalede, bicep dosyasında çıkış değerlerinin nasıl tanımlanacağı açıklanmaktadır. Dağıtılan kaynaklardan değer döndürmeniz gerektiğinde çıkışları kullanırsınız. Bicep dosyasında 64 çıkışla sınırlısınız. Daha fazla bilgi için bkz . Şablon sınırları.

Çıkış değerlerini tanımlama

Çıkış değeri tanımlama söz dizimi şöyledir:

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

Bir çıktı parametre, değişken, modül veya kaynakla aynı ada sahip olabilir. Her çıkış değeri veri türlerinden birine veya kullanıcı tanımlı veri türü ifadesine çözümlenmelidir.

Aşağıdaki örnekte, dağıtılan bir kaynaktan bir özelliğin nasıl döndürüleceği gösterilmektedir. Örnekte, publicIP Bicep dosyasında dağıtılan 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ürlerdeki çıkışların nasıl döndürüleceği 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 kısa çizgi bulunan bir özelliğin çıktısını almanız gerekiyorsa, noktalı virgül yerine adın çevresinde köşeli ayraç kullanın. Örneğin, yerine .property-namekullanın['property-name'].

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

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

Aşağıdaki örnekte tür ifadesinin nasıl kullanılacağı gösterilmektedir:

param foo 'a' | 'b' = 'a'

output out 'a' | 'b' = foo

Daha fazla bilgi için bkz . Kullanıcı tanımlı veri türleri.

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 çıkış kullanırsınız. Aşağıdaki örnekte, yeni bir ip adresinin dağıtılıp dağıtılmadığına bağlı olarak genel IP adresi için kaynak kimliğinin koşullu olarak nasıl döndürüleceği gösterilmektedir.

Bicep'te 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 veya 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 değer örneklerinin sayısını bilmezsiniz. İfadesini for kullanarak değişken sayıda değer döndürebilirsiniz.

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 . Bicep'te yinelemeli döngüler.

Modüllerden çıkışlar

Modülden çıkış değeri almak için aşağıdaki söz dizimini kullanın:

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

Aşağıdaki örnekte, bir modülden bir değer alarak yük dengeleyicide IP adresinin nasıl ayarlanacağı gösterilmektedir.

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

Çıkış değerlerini alma

Dağıtım başarılı olduğunda, çıkış değerleri dağıtımın sonuçlarında otomatik olarak döndürülür.

Dağıtım geçmişinden çıkış değerleri almak için Azure CLI veya Azure PowerShell betiğini kullanabilirsiniz.

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

Çıkışlarda nesne sıralama

JSON'da nesne, sıfır veya daha fazla anahtar/değer çifti içeren sıralanmamış bir koleksiyondur. Sıralama, uygulamalara bağlı olarak farklı olabilir. Örneğin, Bicep items() işlevi nesneleri alfabetik düzende sıralar. Diğer yerlerde özgün sıralama korunabilir. Bu determinizm olmadığından, dağıtım parametreleri ve çıkışlarıyla etkileşim kuran kod yazarken nesne anahtarlarının sıralanmasıyla ilgili varsayımlarda bulunmaktan kaçının.

Sonraki adımlar

  • Çıkışların kullanılabilir özellikleri hakkında bilgi edinmek için bkz . Bicep'in yapısını ve söz dizimini anlama.