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ů. Bez ohledu na to, kde 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 jste omezeni na 256 parametrů. Další informace najdete v tématu Limity šablon.
Osvědčené postupy pro parametry najdete v tématu Parametry.
Školicí materiály
Pokud byste se raději o parametrech dozvěděli 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
Výchozí hodnota
Můžete zadat výchozí hodnotu parametru. Výchozí hodnota se použije, když se během nasazení nezadá hodnota.
param demoParam string = 'Contoso'
Můžete použít výrazy s výchozí hodnotou. Výrazy nejsou povoleny s jinými vlastnostmi parametrů. Nemůžete použít referenční funkci ani žádnou funkci seznamu v oddílu parametrů. Tyto funkce získají stav modulu runtime prostředku a při vyřešení parametrů se nedají spustit před nasazením.
param location string = resourceGroup().location
K vytvoření výchozí hodnoty můžete použít jinou hodnotu parametru. Následující šablona vytvoří z názvu webu název plánu hostitele.
param siteName string = 'site${uniqueString(resourceGroup().id)}'
param hostingPlanName string = '${siteName}-plan'
output siteNameOutput string = siteName
output hostingPlanOutput string = hostingPlanName
Dekoratérů
Parametry používají dekorátory pro omezení nebo metadata. Dekorátory jsou ve formátu @expression
a jsou umístěny nad deklarací parametru. Parametr můžete označit jako bezpečný, 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 dvě 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 způsob jejich použití.
Dekoratér | Platí pro | Argument | Description |
---|---|---|---|
Povoleno | Vše | array | Povolené hodnoty parametru Pomocí tohoto dekorátoru se ujistěte, že uživatel zadá správné hodnoty. |
description | Vše | řetězec | Text, který vysvětluje, jak používat 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 celočíselného parametru. Tato hodnota je inkluzivní. |
metadata | Vše | object | Vlastní vlastnosti, které se mají použít na parametr . Může obsahovat vlastnost description, která je ekvivalentní dekorátoru 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 celočíselného parametru. Tato hodnota je inkluzivní. |
Zabezpečené | řetězec, objekt | žádné | Označí parametr jako bezpečný. Hodnota zabezpečeného parametru se neuloží do historie nasazení a neprotokoluje se. Další informace najdete v tématu Zabezpečení řetězců a objektů. |
Dekorátory jsou v oboru názvů sys. Pokud potřebujete dekorátor odlišit od jiné položky se stejným názvem, před tento dekorátor sys
zadejte . Pokud například soubor Bicep obsahuje parametr s názvem description
, musíte při použití dekorátoru popisu 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é dekorátory 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 parametru secure 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. V poli zadáte povolené hodnoty. Nasazení během ověřování selže, pokud je předána hodnota parametru, 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í. Délka řetězců určuje počet znaků. U polí určuje délka 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 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
Omezení celého čísla
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
Description
Abyste uživatelům pomohli pochopit hodnotu, která se má poskytnout, přidejte k parametru popis. Když uživatel nasadí šablonu prostřednictvím portálu, text popisu se automaticky použije jako tip pro tento parametr. Popis přidejte 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'
Pro text popisu je možné použít text ve formátu Markdown:
@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ž ve VSCode najedete kurzorem na storageAccountName , zobrazí se formátovaný text:
Ujistěte se, že je text v Markdownu správně naformátovaný. Jinak se text nevykreslí správně.
Metadata
Pokud máte vlastní vlastnosti, které chcete použít na parametr, 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 dekoratel můžete použít ke sledování informací o parametru, který nedává smysl přidávat do popisu.
@description('Configuration values that are applied when the application starts.')
@metadata({
source: 'database'
contact: 'Web team'
})
param settings object
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
Související hodnoty můžete snadněji uspořádat tak, že je předáte jako objekt. 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
- Informace o dostupných vlastnostech parametrů najdete v tématu Vysvětlení struktury a syntaxe souborů Bicep.
- Další informace o předávání hodnot parametrů jako souboru najdete v tématu Vytvoření souboru parametrů Bicep.