Parametry v bicep

Tento článek popisuje, jak definovat a používat parametry v souboru bicep. Zadáním různých hodnot pro parametry můžete znovu použít soubor bicep pro různá prostředí.

Správce prostředků řeší hodnoty parametrů před spuštěním operací nasazení. Všude, kde je použit parametr, Správce prostředků ho nahradí vyřešenou hodnotou.

Každý parametr musí být nastaven na jeden z datových typů.

Microsoft Learn

Další informace o parametrech a o praktických pokynech najdete v tématu sestavení opakovaně použitelných šablon bicep pomocí parametrů na Microsoft Learn.

Deklarace

Každý parametr má název a datový typ. Volitelně můžete zadat výchozí hodnotu parametru.

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

Parametr nemůže mít stejný název jako proměnná, prostředek, výstup nebo jiný parametr ve stejném oboru.

Následující příklad ukazuje základní deklarace parametrů.

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

Výchozí hodnota

Pro parametr můžete zadat výchozí hodnotu. Výchozí hodnota se použije, když během nasazování není zadaná hodnota.

param demoParam string = 'Contoso'

Můžete použít výrazy s výchozí hodnotou. Výrazy nejsou povoleny s jinými vlastnostmi parametrů. V části Parameters (parametry) nemůžete použít odkazovou funkci ani žádnou z funkcí seznamu . Tyto funkce získávají běhový stav prostředku a nelze je provést před nasazením, když jsou parametry vyřešeny.

param location string = resourceGroup().location

K vytvoření výchozí hodnoty můžete použít jinou hodnotu parametru. Následující šablona vytvoří název plánu hostitele z názvu webu.

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

output siteNameOutput string = siteName
output hostingPlanOutput string = hostingPlanName

Dekoratéry

Parametry používají dekoratéry pro omezení nebo metadata. Dekoratéry jsou ve formátu @expression a jsou umístěné nad deklarací parametru. Můžete označit parametr jako zabezpečený, zadat povolené hodnoty, nastavit minimální a maximální délku řetězce, nastavit minimální a maximální hodnotu pro celé číslo a zadat popis parametru.

Následující příklad ukazuje dva běžné použití pro dekoratéry.

@secure()
param demoPassword string

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

V následující tabulce jsou popsány dostupné dekoratéry a jejich použití.

Dekoratér Platí pro Argument Popis
povolené Vše array Povolené hodnoty pro parametr Pomocí tohoto dekoratéru zajistěte, aby uživatel poskytoval správné hodnoty.
název Vše řetězec Text, který vysvětluje, jak použít parametr Popis se uživatelům zobrazí prostřednictvím portálu.
maxLength pole, řetězec int Maximální délka parametrů řetězce a pole. Hodnota je včetně.
maxValue int int Maximální hodnota parametru celého čísla. Tato hodnota je včetně.
zprostředkovatele identity Vše object Vlastní vlastnosti, které se mají použít u parametru Může zahrnovat vlastnost Description, která je ekvivalentní dekoratér popisu.
minLength pole, řetězec int Minimální délka parametrů řetězce a pole. Hodnota je včetně.
minValue int int Minimální hodnota pro celočíselný parametr. Tato hodnota je včetně.
požadavk řetězec, objekt žádné Označí parametr jako zabezpečený. Hodnota zabezpečeného parametru se neuloží do historie nasazení a není zaprotokolovaná. Další informace najdete v tématu zabezpečení řetězců a objektů.

Dekoratéry jsou v oboru názvů Sys. Pokud potřebujete odlišit dekoratér z jiné položky se stejným názvem, dekoratér s sys . Například pokud váš soubor bicep obsahuje parametr s názvem, je description nutné při použití parametru Description dekoratér přidat obor názvů Sys.

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

Dostupné dekoratéry jsou popsány v následujících částech.

Zabezpečené parametry

Parametry řetězce nebo objektu můžete označit jako zabezpečené. Hodnota zabezpečeného parametru se neuloží do historie nasazení a není zaprotokolovaná.

@secure()
param demoPassword string

@secure()
param demoSecretObject object

Povolené hodnoty

Můžete definovat povolené hodnoty pro parametr. V poli zadáte povolené hodnoty. Nasazení se během ověřování nezdařilo, pokud je hodnota předána pro parametr, který není jednou z povolených hodnot.

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

Omezení délky

Můžete zadat minimální a maximální délku pro parametry řetězce a pole. Můžete nastavit jedno nebo obě omezení. Pro řetězce označuje Délka počet znaků. Pro pole length určuje počet položek v poli.

Následující příklad deklaruje dva parametry. Jeden parametr je pro název účtu úložiště, který musí mít 3-24 znaků. Druhým parametrem je pole, které musí mít od 1-5 položek.

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

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

Celočíselná omezení

Můžete nastavit minimální a maximální hodnoty pro celočíselné parametry. Můžete nastavit jedno nebo obě omezení.

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

Popis

Aby uživatelé mohli porozumět hodnotě, kterou chcete poskytnout, přidejte do parametru popis. Při nasazování šablony prostřednictvím portálu se text popisu automaticky použije jako Tip pro tento parametr. Pokud text poskytne více informací, než lze odvodit z názvu parametru, přidejte pouze popis.

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

Použít parametr

Chcete-li odkazovat na hodnotu parametru, použijte název parametru. Následující příklad používá hodnotu parametru pro název trezoru klíčů.

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

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

Objekty jako parametry

Můžete snadněji organizovat související hodnoty jejich předáním v podobě objektu. Tento přístup také snižuje počet parametrů v šabloně.

Následující příklad ukazuje parametr, který je objektem. Výchozí hodnota zobrazuje očekávané vlastnosti objektu. Tyto vlastnosti se používají při definování prostředku, který se má nasadit.

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

Další kroky