Parametrar i Bicep
I den här artikeln beskrivs hur du definierar och använder parametrar i en Bicep-fil. Genom att ange olika värden för parametrar kan du återanvända en Bicep-fil för olika miljöer.
Resource Manager matchar parametervärden innan distributionsåtgärder startas. Oavsett var parametern används ersätter Resource Manager den med det lösta värdet.
Varje parameter måste anges till en av datatyperna.
Microsoft Learn
Mer information om parametrar och praktisk vägledning finns i Skapa återanvändbara Bicep-mallar med hjälp av parametrar på Microsoft Learn.
Förklaring
Varje parameter har ett namn och datatypen. Du kan också ange ett standardvärde för parametern .
param <parameter-name> <parameter-data-type> = <default-value>
En parameter får inte ha samma namn som en variabel, resurs, utdata eller någon annan parameter i samma omfång.
I följande exempel visas grundläggande parameterdeklarationer.
param demoString string
param demoInt int
param demoBool bool
param demoObject object
param demoArray array
Standardvärde
Du kan ange ett standardvärde för en parameter. Standardvärdet används när ett värde inte anges under distributionen.
param demoParam string = 'Contoso'
Du kan använda uttryck med standardvärdet. Uttryck tillåts inte med andra parameteregenskaper. Du kan inte använda referensfunktionen eller någon av listfunktionerna i parameteravsnittet. Dessa funktioner hämtar resursens körningstillstånd och kan inte köras innan distributionen när parametrarna har lösts.
param location string = resourceGroup().location
Du kan använda ett annat parametervärde för att skapa ett standardvärde. Följande mall skapar ett värdplannamn från platsnamnet.
param siteName string = 'site${uniqueString(resourceGroup().id)}'
param hostingPlanName string = '${siteName}-plan'
output siteNameOutput string = siteName
output hostingPlanOutput string = hostingPlanName
Inredare
Parametrar använder decorators för begränsningar eller metadata. Decorators är i formatet @expression och placeras ovanför parameterns deklaration. Du kan markera en parameter som säker, ange tillåtna värden, ange minsta och högsta längd för en sträng, ange det lägsta och högsta värdet för ett heltal och ange en beskrivning av parametern.
I följande exempel visas två vanliga användningsområden för decorators.
@secure()
param demoPassword string
@description('Must be at least Standard_A3 to support 2 NICs.')
param virtualMachineSize string = 'Standard_DS1_v2'
I följande tabell beskrivs tillgängliga decorators och hur du använder dem.
| Dekoratör | Tillämpa på | Argument | Description |
|---|---|---|---|
| Tillåtet | all | matris | Tillåtna värden för parametern . Använd den här decorator för att se till att användaren anger rätt värden. |
| beskrivning | all | sträng | Text som förklarar hur du använder parametern . Beskrivningen visas för användarna via portalen. |
| Maxlength | matris, sträng | int | Maximal längd för sträng- och matrisparametrar. Värdet är inkluderande. |
| Maxvalue | int | int | Maxvärdet för heltalsparametern. Det här värdet är inkluderande. |
| metadata | all | objekt | Anpassade egenskaper som ska tillämpas på parametern . Kan innehålla en beskrivningsegenskap som motsvarar beskrivningsdekoratorn. |
| Minlength | matris, sträng | int | Minsta längd för sträng- och matrisparametrar. Värdet är inkluderande. |
| minValue | int | int | Minimivärdet för heltalsparametern. Det här värdet är inkluderande. |
| Säker | sträng, objekt | inget | Markerar parametern som säker. Värdet för en säker parameter sparas inte i distributionshistoriken och loggas inte. Mer information finns i Skydda strängar och objekt. |
Decorators finns i sys-namnrymden. Om du behöver skilja en decorator från ett annat objekt med samma namn ska du inleda decorator med sys . Om bicep-filen till exempel innehåller en parameter med namnet måste du lägga till description sys-namnområdet när du använder beskrivningsdekoratorn.
@sys.description('The name of the instance.')
param name string
@sys.description('The description of the instance to display.')
param description string
Tillgängliga decorators beskrivs i följande avsnitt.
Säkra parametrar
Du kan markera sträng- eller objektparametrar som säkra. Värdet för en säker parameter sparas inte i distributionshistoriken och loggas inte.
@secure()
param demoPassword string
@secure()
param demoSecretObject object
Tillåtna värden
Du kan definiera tillåtna värden för en parameter. Du anger tillåtna värden i en matris. Distributionen misslyckas under valideringen om ett värde skickas för parametern som inte är ett av de tillåtna värdena.
@allowed([
'one'
'two'
])
param demoEnum string
Längdbegränsningar
Du kan ange minsta och högsta längd för sträng- och matrisparametrar. Du kan ange en eller båda begränsningarna. För strängar anger längden antalet tecken. För matriser anger längden antalet objekt i matrisen.
I följande exempel deklareras två parametrar. En parameter är för ett lagringskontonamn som måste innehålla mellan 3 och 24 tecken. Den andra parametern är en matris som måste ha mellan 1 och 5 objekt.
@minLength(3)
@maxLength(24)
param storageAccountName string
@minLength(1)
@maxLength(5)
param appNames array
Heltalsbegränsningar
Du kan ange lägsta och högsta värden för heltalsparametrar. Du kan ange en eller båda begränsningarna.
@minValue(1)
@maxValue(12)
param month int
Description
Lägg till en beskrivning i parametern för att hjälpa användarna att förstå värdet som ska anges. När du distribuerar mallen via portalen används beskrivningens text automatiskt som ett tips för den parametern. Lägg bara till en beskrivning när texten ger mer information än vad som kan härledas från parameternamnet.
@description('Must be at least Standard_A3 to support 2 NICs.')
param virtualMachineSize string = 'Standard_DS1_v2'
Använd parameter
Om du vill referera till värdet för en parameter använder du parameternamnet. I följande exempel används ett parametervärde för ett nyckelvalvsnamn.
param vaultName string = 'keyVault${uniqueString(resourceGroup().id)}'
resource keyvault 'Microsoft.KeyVault/vaults@2019-09-01' = {
name: vaultName
...
}
Objekt som parametrar
Det kan vara enklare att organisera relaterade värden genom att skicka dem som ett objekt. Den här metoden minskar också antalet parametrar i mallen.
I följande exempel visas en parameter som är ett -objekt. Standardvärdet visar förväntade egenskaper för objektet. Dessa egenskaper används när du definierar resursen som ska distribueras.
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
}
}
]
}
}
Nästa steg
- Mer information om tillgängliga egenskaper för parametrar finns i Förstå strukturen och syntaxen för Bicep-filer.
- Mer information om hur du anger parametervärden som en fil finns i Skapa en Bicep-parameterfil.