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 bir Bicep dosyasını farklı ortamlar için yeniden kullanabilirsiniz.

Resource Manager, dağıtım işlemlerini başlatmadan önce parametre değerlerini çözümler. Parametrenin 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 parametreyle aynı 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

param anahtar sözcüğü .bicepparam dosyalarında da kullanılır. .bicepparam dosyalarında, Bicep dosyalarında tanımlandığı gibi veri türünü belirtmeniz gerekmez.

param <parameter-name> = <value>

Daha fazla bilgi için bkz . Parametreler dosyası.

Kullanıcı tanımlı tür ifadeleri bir param deyiminin tür yan tümcesi olarak kullanılabilir. Örneğin:

param storageAccountConfig {
  name: string
  sku: string
}

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

Default value

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 bir 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

Dekoratörler

Parametreler kısıtlamalar veya meta veriler için dekoratörleri 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 en düşük ve en yüksek 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ü dizi 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ü Dize 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 dahildir.
meta veriler tümü nesne 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 en düşük uzunluk. Değer kapsayıcıdır.
Minvalue int int Tamsayı parametresi için en düşük değer. Bu değer dahildir.
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 yazın 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ğerler 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

Dizi parametresi için izin verilen değerler tanımlarsanız, gerçek değer izin verilen değerlerin herhangi bir alt kümesi olabilir.

Uzunluk kısıtlamaları

Dize ve dizi parametreleri için en düşük ve en yüksek uzunlukları belirtebilirsiniz. Bir veya iki kısıtlama ayarlayabilirsiniz. Dizeler için uzunluk, karakter sayısını gösterir. Diziler için uzunluk, dizideki öğe 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ı şablonu portal aracılığıyla dağıttığında, açıklama metni otomatik olarak bu parametre için 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 VS Code'da storageAccountName öğesinin üzerine getirdiğinizde, biçimlendirilmiş metni görürsünüz:

VSCode'da Markdown biçimli metin kullanma

Metnin düzgün Markdown biçimlendirmesine uydığından emin olun; aksi takdirde, işlendiğinde doğru görüntülenmeyebilir

Meta veri

Bir parametreye uygulamak istediğiniz özel özellikleriniz varsa, bir meta veri dekoratörü ekleyin. Meta veriler içinde, özel adlara 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

Bir dekoratöre başka bir @metadata() dekoratörle çakşan bir özellik sağladığınızda, bu dekoratör her zaman dekoratördeki @metadata() her şeyden öncelikli olur. Bu nedenle, değerin @metadata() içindeki çakışan özellik yedeklidir ve değiştirilecektir. Daha fazla bilgi için bkz . Çakışan meta veri yok.

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

  • Parametrelerin kullanılabilir özellikleri hakkında bilgi edinmek için bkz . Bicep dosyalarının yapısını ve söz dizimini anlama.
  • Parametre değerlerini dosya olarak geçirme hakkında bilgi edinmek için bkz . Bicep parametre dosyası oluşturma.
  • Dağıtımda parametre değerleri sağlama hakkında bilgi edinmek için bkz . Azure CLI ile dağıtma ve Azure PowerShell ile dağıtma.