Parametry v Bicep

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

Resource Manager před zahájením operací nasazení přeloží hodnoty parametrů. Kdykoli se použije parametr, Resource Manager ho nahradí přeloženou hodnotou.

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

V souboru Bicep máte omezení na 256 parametrů. Další informace najdete v tématu Omezení šablon.

Osvědčené postupy pro parametry najdete v tématu Parametry.

Školicí materiály

Pokud byste se raději dozvěděli o parametrech prostřednictvím podrobných pokynů, přečtěte si téma Vytváření opakovaně použitelných šablon Bicep pomocí parametrů.

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

Klíčové param slovo se také používá v souborech .bicepparam. V souborech .bicepparam nemusíte zadávat datový typ, protože je definován v souborech Bicep.

param <parameter-name> = <value>

Další informace naleznete v části Soubor parametrů.

Výrazy typu definované uživatelem lze použít jako klauzuli param typu příkazu. Příklad:

param storageAccountConfig {
  name: string
  sku: string
}

Další informace naleznete v tématu Uživatelem definované datové typy.

Default value

Můžete zadat výchozí hodnotu parametru. Výchozí hodnota se použije, když není během nasazení zadaná hodnota.

param demoParam string = 'Contoso'

Výrazy můžete použít s výchozí hodnotou. Výrazy nejsou povoleny s jinými vlastnostmi parametrů. V oddílu parametrů nemůžete použít referenční funkci ani žádnou funkci seznamu . Tyto funkce získají stav modulu runtime prostředku a nelze je spustit před nasazením při řešení parametrů.

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í dekorátory pro omezení nebo metadata. Dekorátory jsou ve formátu @expression a jsou umístěny nad deklaraci parametru. Parametr můžete označit 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í dekorátorů.

@secure()
param demoPassword string

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

Následující tabulka popisuje dostupné dekorátory a jejich použití.

Dekoratér Platí pro Argument Popis
Povoleno vše pole Povolené hodnoty pro parametr. Pomocí tohoto dekorátoru se ujistěte, že uživatel poskytuje správné hodnoty.
Popis vše string Text, který vysvětluje použití parametru. Popis se uživatelům zobrazí prostřednictvím portálu.
Maxlength array, string int Maximální délka parametrů řetězce a pole. Hodnota je inkluzivní.
Maxvalue int int Maximální hodnota celočíselného parametru. Tato hodnota je inkluzivní.
metadata vše objekt Vlastní vlastnosti, které se mají použít u parametru. Může obsahovat vlastnost popisu, která je ekvivalentní popis dekorátoru.
Minlength array, string int Minimální délka parametrů řetězce a pole. Hodnota je inkluzivní.
Minvalue int int Minimální hodnota celočíselného parametru. Tato hodnota je inkluzivní.
Zabezpečené string, object Žádná Označí parametr jako zabezpečený. Hodnota zabezpečeného parametru se neuloží do historie nasazení a nezaprotokoluje se. Další informace naleznete v tématu Zabezpečení řetězců a objektů.

Dekorátory jsou v oboru názvů sys. Pokud potřebujete odlišit dekorátor od jiné položky se stejným názvem, předkožte dekorátorem .sys Pokud například váš soubor Bicep obsahuje parametr s názvem description, musíte přidat obor názvů sys při použití dekorátoru popisu .

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

Dostupné dekorátory jsou popsány v následujících částech.

Zabezpečené parametry

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

@secure()
param demoPassword string

@secure()
param demoSecretObject object

Povolené hodnoty

Pro parametr můžete definovat povolené hodnoty. Do pole zadáte povolené hodnoty. Nasazení selže během ověřování, pokud je hodnota předána pro parametr, který není jednou z povolených hodnot.

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

Pokud definujete povolené hodnoty pro parametr pole, skutečná hodnota může být libovolná podmnožina povolených hodnot.

Omezení délky

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

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

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

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

Celočíselná omezení

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

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

Popis

Pokud chcete uživatelům pomoct pochopit hodnotu, kterou chcete poskytnout, přidejte do parametru popis. Když uživatel nasadí šablonu prostřednictvím portálu, text popisu se automaticky použije jako tip pro tento parametr. Přidejte popis pouze v případech, kdy text poskytuje více informací, než lze odvodit z názvu parametru.

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

Text ve formátu Markdownu lze použít pro text popisu:

@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

Když v editoru VS Code najedete myší na storageAccountName , zobrazí se formátovaný text:

Použití textu ve formátu Markdown ve VSCode

Ujistěte se, že text odpovídá správnému formátování Markdownu; jinak se při vykreslení nemusí zobrazovat správně.

Metadata

Pokud máte vlastní vlastnosti, které chcete použít u parametru, přidejte dekorátor metadat. V metadatech definujte objekt s vlastními názvy a hodnotami. Objekt, který definujete pro metadata, může obsahovat vlastnosti libovolného názvu a typu.

Tento dekorátor můžete použít ke sledování informací o parametru, který nemá smysl přidat do popisu.

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

Když poskytnete @metadata() dekorátoru vlastnost, která je v konfliktu s jiným dekorátorem, má tento dekorátor vždy přednost před čímkoli v dekorátoru @metadata() . Konfliktní vlastnost v rámci @metadata() hodnoty je tedy redundantní a bude nahrazena. Další informace naleznete v tématu Žádné konfliktní metadata.

Použití parametru

Pokud chcete 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

Uspořádání souvisejících hodnot může být jednodušší jejich předáním jako objektu. Tento přístup také snižuje počet parametrů v šabloně.

Následující příklad ukazuje parametr, který je objekt. 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