Bıcep içindeki parametreler

Bu makalede, bir bicep dosyasında parametrelerin nasıl tanımlanacağı ve kullanılacağı açıklanmaktadır. Parametreler için farklı değerler sunarak, bir Bıcep dosyasını farklı ortamlar için yeniden kullanabilirsiniz.

Kaynak Yöneticisi, dağıtım işlemlerini başlatmadan önce parametre değerlerini çözer. Parametrenin kullanıldığı her yerde, Kaynak Yöneticisi çözümlenen değer ile değiştirilir.

Her parametrenin veri türlerindenbirine ayarlanması gerekir.

Microsoft Learn

Parametreler hakkında daha fazla bilgi edinmek ve uygulamalı yönergeler için bkz. Microsoft Learn parametreleri kullanarak yeniden kullanılabilir bıcep şablonları oluşturma .

Bildirim

Her parametrenin bir adı ve veri türüvardır. İsteğe bağlı olarak, parametresi için varsayılan bir değer sağlayabilirsiniz.

param <parameter-name> <parameter-data-type> = <default-value>

Bir parametre aynı ada sahip bir değişken, kaynak, çıkış veya diğer parametre ile aynı ada sahip olamaz.

Aşağıdaki örnek parametrelerin temel bildirimlerini gösterir.

param demoString string
param demoInt int
param demoBool bool
param demoObject object
param demoArray array

Varsayılan değer

Bir parametre için varsayılan bir değer belirtebilirsiniz. Dağıtım sırasında bir değer sağlanmamışsa varsayılan değer kullanılır.

param demoParam string = 'Contoso'

Varsayılan değer ile ifadeleri kullanabilirsiniz. Diğer parametre özellikleriyle ifadelere izin verilmez. Parameters bölümünde başvuru işlevini veya liste işlevlerinden herhangi birini kullanamazsınız. Bu işlevler, kaynağın çalışma zamanı durumunu alır ve parametreler çözümlendiğinde dağıtımdan önce yürütülemez.

param location string = resourceGroup().location

Varsayılan bir değer oluşturmak için başka bir parametre değeri de kullanabilirsiniz. Aşağıdaki şablon, site adından bir konak planı adı oluşturur.

param siteName string = 'site${uniqueString(resourceGroup().id)}'
param hostingPlanName string = '${siteName}-plan'

output siteNameOutput string = siteName
output hostingPlanOutput string = hostingPlanName

Dekoratörler

Parametreler, kısıtlamalar veya meta veriler için dekoratörler kullanır. Dekoratörler biçimindedir @expression ve parametre bildiriminin üstüne yerleştirilir. Bir parametreyi güvenli olarak işaretleyebilir, izin verilen değerler belirtebilir, bir dize için minimum ve maksimum uzunluğu ayarlayabilir, bir tamsayı için en düşük ve en büyük değeri ayarlayabilir ve parametresi için bir açıklama sağlayabilirsiniz.

Aşağıdaki örnek, dekoratörler için iki ortak kullanımı gösterir.

@secure()
param demoPassword string

@description('Must be at least Standard_A3 to support 2 NICs.')
param virtualMachineSize string = 'Standard_DS1_v2'

Aşağıdaki tabloda, kullanılabilir dekoratörler ve bunların nasıl kullanılacağı açıklanmaktadır.

Dekoratör Uygula Bağımsız Değişken Açıklama
izin verilen tümü array Parametre için izin verilen değerler. Kullanıcının doğru değerler sağladığından emin olmak için bu dekoratörü kullanın.
açıklaması tümü string Parametresinin nasıl kullanılacağını açıklayan metin. Açıklama, portalda kullanıcılar için görüntülenir.
'In dizi, dize int Dize ve dizi parametreleri için uzunluk üst sınırı. Değer dahil değildir.
Değerini int int Integer parametresinin en büyük değeri. Bu değer dahil değildir.
meta veriler tümü object Parametreye uygulanacak özel özellikler. Açıklama dekoratörü ile eşdeğer bir açıklama özelliği içerebilir.
minLength dizi, dize int Dize ve dizi parametreleri için minimum uzunluk. Değer dahil değildir.
minValue int int Integer parametresinin en küçük değeri. Bu değer dahil değildir.
güvende dize, nesne yok Parametreyi güvenli olarak işaretler. Güvenli bir parametre değeri dağıtım geçmişine kaydedilmez ve günlüğe kaydedilmez. Daha fazla bilgi için bkz. güvenli dizeler ve nesneler.

Dekoratörler sys ad alanıdır. Bir dekoratörü aynı ada sahip başka bir öğeden ayırt etmeniz gerekiyorsa, dekoratörü ile birlikte sys . Örneğin, Bıcep dosyanız adlı bir parametre içeriyorsa description , Açıklama dekoratörü kullanılırken sys ad alanını eklemeniz gerekir.

@sys.description('The name of the instance.')
param name string
@sys.description('The description of the instance to display.')
param description string

Kullanılabilir dekoratörler aşağıdaki bölümlerde açıklanmıştır.

Güvenli parametreler

Dize veya nesne parametrelerini güvenli olarak işaretleyebilirsiniz. Güvenli bir parametrenin değeri dağıtım geçmişine kaydedilmez ve günlüğe kaydedilmez.

@secure()
param demoPassword string

@secure()
param demoSecretObject object

İzin verilen değerler

Bir parametre için izin verilen değerleri tanımlayabilirsiniz. Bir dizide izin verilen değerleri sağlarsınız. İzin verilen değerlerden biri olmayan bir parametre için bir değer geçirilirse, doğrulama sırasında dağıtım başarısız olur.

@allowed([
  'one'
  'two'
])
param demoEnum string

Uzunluk kısıtlamaları

Dize ve dizi parametreleri için minimum ve maksimum uzunlukları belirtebilirsiniz. Bir veya her iki kısıtlamayı da ayarlayabilirsiniz. Dizeler için uzunluk, karakter sayısını belirtir. Diziler için, Uzunluk dizideki öğelerin sayısını belirtir.

Aşağıdaki örnek iki parametre bildirir. Tek parametre 3-24 karakter uzunluğunda olması gereken depolama hesabı adına yöneliktir. Diğer parametre 1-5 öğeden olması gereken bir dizidir.

@minLength(3)
@maxLength(24)
param storageAccountName string

@minLength(1)
@maxLength(5)
param appNames array

Tamsayı kısıtlamaları

Tamsayı parametreleri için en düşük ve en yüksek değerleri ayarlayabilirsiniz. Bir veya her iki kısıtlamayı da ayarlayabilirsiniz.

@minValue(1)
@maxValue(12)
param month int

Açıklama

Kullanıcılara sağlanacak değeri anlamalarına yardımcı olmak için parametreye bir açıklama ekleyin. Şablonu Portal üzerinden dağıttığınızda, açıklamanın metni bu parametre için bir ipucu olarak otomatik olarak kullanılır. Yalnızca metin, parametre adından çıkarsandan daha fazla bilgi sağlıyorsa açıklama ekleyin.

@description('Must be at least Standard_A3 to support 2 NICs.')
param virtualMachineSize string = 'Standard_DS1_v2'

Parametre kullan

Bir parametre için değere başvurmak üzere parametre adını kullanın. Aşağıdaki örnek, bir Anahtar Kasası adı için bir parametre değeri kullanır.

param vaultName string = 'keyVault${uniqueString(resourceGroup().id)}'

resource keyvault 'Microsoft.KeyVault/vaults@2019-09-01' = {
  name: vaultName
  ...
}

Parametre olarak nesneler

İlgili değerleri bir nesne olarak geçirerek düzenlemek daha kolay olabilir. Bu yaklaşım ayrıca şablondaki parametre sayısını azaltır.

Aşağıdaki örnek bir nesnesi olan bir parametresini gösterir. Varsayılan değer, nesne için beklenen özellikleri gösterir. Bu özellikler, dağıtılacak kaynağı tanımlarken kullanılır.

param vNetSettings object = {
  name: 'VNet1'
  location: 'eastus'
  addressPrefixes: [
    {
      name: 'firstPrefix'
      addressPrefix: '10.0.0.0/22'
    }
  ]
  subnets: [
    {
      name: 'firstSubnet'
      addressPrefix: '10.0.0.0/24'
    }
    {
      name: 'secondSubnet'
      addressPrefix: '10.0.1.0/24'
    }
  ]
}

resource vnet 'Microsoft.Network/virtualNetworks@2020-06-01' = {
  name: vNetSettings.name
  location: vNetSettings.location
  properties: {
    addressSpace: {
      addressPrefixes: [
        vNetSettings.addressPrefixes[0].addressPrefix
      ]
    }
    subnets: [
      {
        name: vNetSettings.subnets[0].name
        properties: {
          addressPrefix: vNetSettings.subnets[0].addressPrefix
        }
      }
      {
        name: vNetSettings.subnets[1].name
        properties: {
          addressPrefix: vNetSettings.subnets[1].addressPrefix
        }
      }
    ]
  }
}

Sonraki adımlar