Bicep'teki Parametreler

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

Resource Manager, dağıtım işlemlerine başlamadan önce parametre değerlerini çözümler. parametresinin kullanıldığı her yerde Resource Manager parametresini çözümlenen değerle değiştirir.

Her parametre veri türlerinden birine ayarlanmalıdır.

Bicep dosyasında 256 parametreyle sınırlısınız. Daha fazla bilgi için bkz . Şablon sınırları.

Parametre en iyi yöntemleri için bkz. Parametreler.

Eğitim kaynakları

Adım adım yönergeler aracılığıyla parametreler hakkında bilgi edinmek isterseniz bkz. Parametreleri kullanarak yeniden kullanılabilir Bicep ş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>

Parametrenin adı değişken, kaynak, çıkış veya aynı kapsamdaki başka bir parametre olamaz.

Aşağıdaki örnekte parametrelerin temel bildirimleri gösterilmektedir.

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

Varsayılan değer

Parametre için varsayılan bir değer belirtebilirsiniz. Varsayılan değer, dağıtım sırasında bir değer sağlanmayan durumlarda kullanılır.

param demoParam string = 'Contoso'

İfadeleri varsayılan değerle kullanabilirsiniz. İfadelere diğer parametre özellikleriyle izin verilmez. Parametreler bölümündeki 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 değer oluşturmak için başka bir parametre değeri 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

Decorators

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

Aşağıdaki örnekte dekoratörler için iki yaygın kullanım gösterilmektedir.

@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 parametresi 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çıklama tümü string parametresinin nasıl kullanılacağını açıklayan metin. Açıklama portal aracılığıyla kullanıcılara görüntülenir.
Maxlength dizi, dize int Dize ve dizi parametreleri için uzunluk üst sınırı. Değer kapsayıcıdır.
Maxvalue int int Tamsayı parametresi için en büyük değer. Bu değer kapsayıcıdır.
meta veriler tümü object parametresine uygulanacak özel özellikler. Açıklama dekoratörüne eşdeğer bir açıklama özelliği içerebilir.
Minlength dizi, dize int Dize ve dizi parametreleri için minimum uzunluk. Değer kapsayıcıdır.
Minvalue int int Tamsayı parametresinin en küçük değeri. Bu değer kapsayıcıdır.
Güvenli dize, nesne yok parametresini güvenli olarak işaretler. Güvenli parametrenin 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ındadır. Dekoratörü aynı ada sahip başka bir öğeden ayırt etmeniz gerekiyorsa, dekoratörün önüne ile geçin sys. Örneğin, Bicep dosyanız adlı descriptionbir parametre içeriyorsa , 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 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 parametre için bir değer geçirilirse dağıtım doğrulama sırasında 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 iki kısıtlama ayarlayabilirsiniz. Dizeler için uzunluk, karakter sayısını gösterir. Diziler için uzunluk, dizideki öğelerin sayısını gösterir.

Aşağıdaki örnekte iki parametre bildirmektedir. Bir parametre, 3-24 karakter uzunluğunda olması gereken bir depolama hesabı adıdır. 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 iki kısıtlama ayarlayabilirsiniz.

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

Açıklama

Kullanıcıların sağlayabilecekleri değeri anlamasına yardımcı olmak için parametresine bir açıklama ekleyin. Kullanıcı portalı kullanarak şablonu dağıttığında, açıklama metni otomatik olarak bu parametre için bir ipucu olarak kullanılır. Yalnızca metin parametre adından çıkarılabilenden daha fazla bilgi sağladığında açıklama ekleyin.

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

Markdown biçimli metin açıklama metni için kullanılabilir:

@description('''
Storage account name restrictions:
- Storage account names must be between 3 and 24 characters in length and may contain numbers and lowercase letters only.
- Your storage account name must be unique within Azure. No two storage accounts can have the same name.
''')
@minLength(3)
@maxLength(24)
param storageAccountName string

İmlecinizi VSCode'da storageAccountName öğesinin üzerine getirdiğinizde biçimlendirilmiş metni görürsünüz:

VSCode'da Markdown biçimli metin kullanma

Metnin iyi biçimlendirilmiş Markdown olduğundan emin olun. Aksi takdirde metin doğru şekilde işlenmez.

Meta veri

Bir parametreye uygulamak istediğiniz özel özellikleriniz varsa, bir meta veri dekoratörü ekleyin. Meta veriler içinde, özel adlar ve değerlere sahip bir nesne tanımlayın. Meta veriler için tanımladığınız nesne herhangi bir adın ve türün özelliklerini içerebilir.

Açıklamaya eklemek için anlamlı olmayan parametre hakkındaki bilgileri izlemek için bu dekoratörü kullanabilirsiniz.

@description('Configuration values that are applied when the application starts.')
@metadata({
  source: 'database'
  contact: 'Web team'
})
param settings object

Parametre kullanma

Parametrenin değerine başvurmak için parametre adını kullanın. Aşağıdaki örnekte anahtar kasası adı için parametre değeri kullanılmaktadır.

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

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

Parametre olarak nesneler

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

Aşağıdaki örnekte nesne olan bir parametre gösterilmektedir. 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