Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek popisuje strukturu a syntaxi souboru Bicep. Zobrazí různé části souboru a vlastnosti, které jsou v těchto oddílech k dispozici.
Podrobný kurz, který vás provede procesem vytvoření souboru Bicep, najdete v tématu Rychlý start: Vytvoření souborů Bicep pomocí editoru Visual Studio Code.
Známá omezení
- Jazyk Bicep nepodporuje koncept
apiProfile. Tento koncept mapuje jedenapiProfilena množinuapiVersionpro každý typ prostředku. - Uživatelem definované funkce se v tuto chvíli nepodporují. Experimentální funkce je momentálně přístupná. Další informace naleznete v tématu Uživatelem definované funkce v Bicep.
- Některé funkce Bicep vyžadují odpovídající změnu zprostředkujícího jazyka (šablony JSON Azure Resource Manageru). Produktový tým oznamuje tyto funkce jako dostupné po nasazení všech požadovaných aktualizací do globálního Azure. Pokud používáte jiné prostředí, jako je Azure Stack, může dojít ke zpoždění dostupnosti funkce. Funkce Bicep je dostupná až poté, co je ve zprostředkovávajícím jazyce v daném prostředí také provedena aktualizace.
Formát Bicep
Bicep je deklarativní jazyk, což znamená, že prvky se mohou objevit v libovolném pořadí. Na rozdíl od imperativních jazyků pořadí prvků nemá vliv na zpracování nasazení.
Soubor Bicep obsahuje následující prvky:
#<directive-name> <argument> [<argument> ...]
@<decorator>(<argument>)
metadata <metadata-name> = ANY
targetScope = '<scope>'
@<decorator>(<argument>)
type <user-defined-data-type-name> = <type-expression>
@<decorator>(<argument>)
func <user-defined-function-name> (<argument-name> <data-type>, <argument-name> <data-type>, ...) <function-data-type> => <expression>
@<decorator>(<argument>)
param <parameter-name> <parameter-data-type> = <default-value>
@<decorator>(<argument>)
var <variable-name> = <variable-value>
@<decorator>(<argument>)
resource <resource-symbolic-name> '<resource-type>@<api-version>' = {
<resource-properties>
}
@<decorator>(<argument>)
module <module-symbolic-name> '<path-to-file>' = {
name: '<linked-deployment-name>'
params: {
<parameter-names-and-values>
}
}
@<decorator>(<argument>)
output <output-name> <output-data-type> = <output-value>
Následující příklad ukazuje implementaci těchto prvků:
metadata description = 'Creates a storage account and a web app'
@description('The prefix to use for the storage account name.')
@minLength(3)
@maxLength(11)
param storagePrefix string
param storageSKU string = 'Standard_LRS'
param location string = resourceGroup().location
var uniqueStorageName = '${storagePrefix}${uniqueString(resourceGroup().id)}'
resource stg 'Microsoft.Storage/storageAccounts@2025-06-01' = {
name: uniqueStorageName
location: location
sku: {
name: storageSKU
}
kind: 'StorageV2'
properties: {
supportsHttpsTrafficOnly: true
}
}
module webModule './webApp.bicep' = {
name: 'webDeploy'
params: {
skuName: 'S1'
location: location
}
}
Metadata
Metadata v Bicep jsou netypová hodnota, kterou můžete zahrnout do souborů Bicep. Metadata poskytují doplňující informace o souborech Bicep, jako je název, popis, autor a datum vytvoření.
Cílový obor
Výchozí cílový obor je resourceGroup. Pokud nasadíte na úrovni skupiny prostředků, nemusíte v souboru Bicep nastavit cílový obor.
Povolené hodnoty jsou následující:
-
resourceGroup: Výchozí hodnota použitá pro nasazení skupiny prostředků. -
subscription: Používá se pro nasazování v rámci předplatného. -
managementGroup: Používá se pro nasazení skupin pro správu. -
tenant: Používá se pro nasazení tenanta.
V modulu můžete zadat obor, který se liší od rozsahu pro zbytek souboru Bicep. Další informace najdete v tématu Konfigurace oboru modulu.
Parametry
Použijte parametry pro hodnoty, které se musí pro různá nasazení lišit. Můžete definovat výchozí hodnotu parametru, který se použije, pokud během nasazení není zadaná hodnota.
Můžete například přidat SKU parametr pro zadání různých velikostí prostředku. V závislosti na tom, jestli nasazujete do testování nebo produkčního prostředí, můžete předat různé hodnoty.
param storageSKU string = 'Standard_LRS'
Parametr je k dispozici pro použití v souboru Bicep.
sku: {
name: storageSKU
}
Pro každý parametr můžete přidat jeden nebo více dekorátorů. Další informace naleznete v tématu Použití dekorátorů.
Další informace naleznete v tématu Parametry v Bicep.
Proměnné
Aby byl soubor Bicep čitelnější, zapouzdřte složité výrazy do proměnné. Můžete například přidat proměnnou pro název prostředku, který vytvoříte zřetězením několika hodnot dohromady.
var uniqueStorageName = '${storagePrefix}${uniqueString(resourceGroup().id)}'
Tuto proměnnou použijte všude, kde potřebujete komplexní výraz.
resource stg 'Microsoft.Storage/storageAccounts@2025-06-01' = {
name: uniqueStorageName
Pro každou proměnnou můžete přidat jeden nebo více dekorátorů. Další informace naleznete v tématu Použití dekorátorů.
Další informace najdete v Proměnné v Bicep.
Zdroje informací
Pomocí klíčového resource slova definujte prostředek, který se má nasadit. Deklarace prostředku obsahuje symbolický název prostředku. Tento symbolický název použijte v jiných částech souboru Bicep k získání hodnoty z prostředku.
Deklarace prostředku zahrnuje typ prostředku a verzi rozhraní API. V těle deklarace prostředku uveďte vlastnosti specifické pro daný typ prostředku.
resource stg 'Microsoft.Storage/storageAccounts@2025-06-01' = {
name: uniqueStorageName
location: location
sku: {
name: storageSKU
}
kind: 'StorageV2'
properties: {
supportsHttpsTrafficOnly: true
}
}
Pro každý zdroj můžete přidat jeden nebo více dekorátorů. Další informace naleznete v tématu Použití dekorátorů.
Další informace najdete v tématu Deklarace prostředků v Bicep.
Některé prostředky mají vztah nadřazenosti nebo podřízenosti. Definovat podřízený prostředek můžete buď uvnitř nadřazeného prostředku, nebo mimo něj.
Následující příklad ukazuje, jak definovat podřízený prostředek uvnitř nadřazeného prostředku. Obsahuje účet úložiště s podřízeným prostředkem (souborovou službou), který je definovaný v rámci účtu úložiště. Souborová služba má také podřízený prostředek (sdílenou složku), který je v něm definovaný.
resource storage 'Microsoft.Storage/storageAccounts@2025-06-01' = {
name: 'examplestorage'
location: resourceGroup().location
kind: 'StorageV2'
sku: {
name: 'Standard_LRS'
}
resource service 'fileServices' = {
name: 'default'
resource share 'shares' = {
name: 'exampleshare'
}
}
}
Následující příklad ukazuje, jak definovat podřízený prostředek mimo rámec nadřazeného prostředku. K identifikaci vztahu rodiče a dítěte použijete vlastnost rodiče. Jsou definovány stejné tři prostředky.
resource storage 'Microsoft.Storage/storageAccounts@2025-06-01' = {
name: 'examplestorage'
location: resourceGroup().location
kind: 'StorageV2'
sku: {
name: 'Standard_LRS'
}
}
resource service 'Microsoft.Storage/storageAccounts/fileServices@2025-06-01' = {
name: 'default'
parent: storage
}
resource share 'Microsoft.Storage/storageAccounts/fileServices/shares@2025-06-01' = {
name: 'exampleshare'
parent: service
}
Další informace naleznete v tématu Nastavení názvu a typu pro podřízené prostředky v Bicep.
Modules
Moduly umožňují opakovaně používat kód ze souboru Bicep v jiných souborech Bicep. V deklaraci modulu propojíte soubor, který chcete použít znovu. Když nasadíte soubor Bicep, nasadíte také prostředky v modulu.
module webModule './webApp.bicep' = {
name: 'webDeploy'
params: {
skuName: 'S1'
location: location
}
}
Symbolický název umožňuje odkazovat na modul odjinud v souboru. Výstupní hodnotu můžete získat například z modulu pomocí symbolického názvu a názvu výstupní hodnoty.
Pro každý modul můžete přidat jeden nebo více dekorátorů. Další informace naleznete v tématu Použití dekorátorů.
Další informace najdete v tématu Použití modulů Bicep.
Výstupy
Pomocí výstupů můžete vracet hodnoty z nasazení. Obvykle vrátíte hodnotu z nasazeného prostředku, když potřebujete tuto hodnotu znovu použít pro jinou operaci.
output storageEndpoint object = stg.properties.primaryEndpoints
Pro každý výstup můžete přidat jeden nebo více dekorátorů. Další informace naleznete v tématu Použití dekorátorů.
Další informace najdete v tématu Výstupy v Bicep.
Types
type Příkaz použijte k definování uživatelem definovaných datových typů.
param location string = resourceGroup().location
type storageAccountSkuType = 'Standard_LRS' | 'Standard_GRS'
type storageAccountConfigType = {
name: string
sku: storageAccountSkuType
}
param storageAccountConfig storageAccountConfigType = {
name: 'storage${uniqueString(resourceGroup().id)}'
sku: 'Standard_LRS'
}
resource storageAccount 'Microsoft.Storage/storageAccounts@2025-06-01' = {
name: storageAccountConfig.name
location: location
sku: {
name: storageAccountConfig.sku
}
kind: 'StorageV2'
}
Pro každý uživatelem definovaný datový typ můžete přidat jeden nebo více dekorátorů. Další informace naleznete v tématu Použití dekorátorů.
Další informace naleznete v tématu Uživatelem definované datové typy v Bicep.
Functions
V souboru Bicep můžete vytvořit vlastní funkce a také použít standardní funkce Bicep , které jsou automaticky dostupné v souborech Bicep. Vytvořte si vlastní funkce, pokud máte složité výrazy, které opakovaně používáte v souborech Bicep.
func buildUrl(https bool, hostname string, path string) string => '${https ? 'https' : 'http'}://${hostname}${empty(path) ? '' : '/${path}'}'
output azureUrl string = buildUrl(true, 'microsoft.com', 'azure')
Další informace naleznete v tématu Uživatelem definované funkce v Bicep.
Dekoratéry
Přidejte jeden nebo více dekorátorů do každého z následujících prvků:
Následující tabulka uvádí dekorátory:
| Dekoratér | Použít u elementu | Použít u datového typu | Argument | Popis |
|---|---|---|---|---|
| allowed | param | all | pole | Pomocí tohoto dekorátoru se ujistěte, že uživatel poskytuje správné hodnoty. Tento dekorátor je povolen pouze u param příkazů. Chcete-li deklarovat, že vlastnost musí být jednou ze sady předdefinovaných hodnot v type příkazu nebo output příkazu, použijte syntaxi sjednocovacího typu. Syntaxi sjednocovacího typu můžete použít také v param příkazech. |
| batchSize | modul, prostředek | N/A | integer | Nastavte instance pro postupné nasazení. |
| popis | func, param, module, output, resource, type, var | all | řetězec | Zadejte popisy prvků. Pro text popisu použijte text ve formátu Markdownu. |
| diskriminátor | parametr, typ, výstup | objekt | řetězec | Pomocí tohoto dekorátoru se ujistěte, že je identifikována a spravována příslušná podtřída. Další informace naleznete v tématu Vlastní značky sjednocovacího datového typu. |
| exportovat | func, type, var | all | Žádná | Označuje, že jiný soubor Bicep může importovat element. |
| maxLength | parametr, výstup, typ | pole, řetězec | int | Maximální délka řetězcových a maticových prvků. Hodnota je inkluzivní. |
| maximální hodnota | parametr, výstup, typ | int | int | Maximální hodnota celočíselného elementu. Tato hodnota je inkluzivní. |
| metadata | func, output, param, type | all | objekt | Vlastní vlastnosti, které se mají použít u prvků. Může obsahovat vlastnost popisu, jež je ekvivalentní dekorátoru popisu. |
| minLength | parametr, výstup, typ | pole, řetězec | int | Minimální délka pro řetězcové a maticové prvky. Hodnota je inkluzivní. |
| minimální hodnota | parametr, výstup, typ | int | int | Minimální hodnota celočíselného elementu. Tato hodnota je inkluzivní. |
| zapečetěný | parametr, typ, výstup | objekt | Žádná | Zvýšení úrovně BCP089 z upozornění na chybu, pokud je název vlastnosti uživatelem definovaného datového typu pravděpodobně překlep. Další informace naleznete v tématu Zvýšení úrovně chyby. |
| secure | parametr,typ | řetězec, objekt | Žá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ů. |
Direktivy
Bicep podporuje direktivy (pragmata) k řízení určitého chování v souboru, například potlačení upozornění linteru nebo varovných diagnostických zpráv. Direktivy mají předponu znaku # .
#<directive-name> <argument1> [<argument2> ... ]
Za direktivou je nutné zadat alespoň jeden identifikátor. Pokud nezadáte žádné identifikátory, kompilátor hlásí chybu. Identifikátory, které zadáte za direktivou, mohou odkazovat na:
-
Diagnostika kompilátoru Bicep, například
BCP138 -
Pravidla linteru Bicep, například
no-unused-params
Argumenty oddělíte mezerami. V pravidlech linter a diagnostických kódech se rozlišují malá a velká písmena.
Bicep v současné době podporuje tři typy direktiv:
-
#disable-next-line— zakáže pouze jednu nebo více diagnostiky pro další řádek. -
#disable-diagnostics— zakáže jednu nebo více diagnostik pro celý soubor nebo dokud se znovu neaktivuje. -
#restore-diagnostics— znovu povolí dříve zakázanou diagnostiku.
Následující příklad potlačí několik diagnostik a pravidel:
#disable-diagnostics no-unused-vars BCP335
var location = 'eastus'
param storageCount int
resource accounts 'Microsoft.Storage/storageAccounts@2025-06-01' = [for i in range(0, storageCount): if (i % 2 == 0) {
name: 'sa0820${i}'
location: resourceGroup().location
sku: {
name: 'Standard_LRS'
}
kind: 'StorageV2'
}]
Pokyny používejte střídmě a pouze při kontrole a úmyslném potlačení diagnostických nebo linterových pravidel. Nadměrné použití může snížit čitelnost a udržovatelnost šablon. Přidejte komentář vysvětlující, proč se pravidla nebo diagnostické kódy na tento řádek nevztahují.
Loops
Přidejte do souboru Bicep iterativní smyčky pro definování více kopií:
- Prostředek
- Modul
- Proměnná
- Vlastnost
- Výstup
Pomocí výrazu for definujte smyčku.
param moduleCount int = 2
module stgModule './example.bicep' = [for i in range(0, moduleCount): {
name: '${i}deployModule'
params: {
}
}]
Můžete iterovat pole, objekt nebo celočíselné indexy.
Další informace naleznete v tématu Iterativní smyčky v Bicep.
Podmíněné nasazení
Prostředek nebo modul můžete přidat do souboru Bicep pro podmíněné nasazení. Během nasazení se podmínka vyhodnotí a výsledek určuje, jestli je prostředek nebo modul nasazený. Pomocí výrazu if definujte podmíněné nasazení.
param deployZone bool
resource dnsZone 'Microsoft.Network/dnsZones@2023-07-01-preview' = if (deployZone) {
name: 'myZone'
location: 'global'
}
Další informace najdete v tématu Podmíněné nasazení v Bicep s výrazem if.
Whitespace
Soubory Bicep ignorují mezery a tabulátory.
Bicep je citlivý na nové čáry. Příklad:
resource sa 'Microsoft.Storage/storageAccounts@2025-06-01' = if (newOrExisting == 'new') {
...
}
Nemůžete ho napsat takto:
resource sa 'Microsoft.Storage/storageAccounts@2025-06-01' =
if (newOrExisting == 'new') {
...
}
Můžete definovat objekty a pole na více řádky.
Komentáře
Používá se // pro jednořádkové komentáře nebo /* ... */ pro víceřádkové komentáře.
Následující příklad znázorňuje komentář na jedné řádce.
// This is your primary NIC.
resource nic1 'Microsoft.Network/networkInterfaces@2025-01-01' = {
...
}
Následující příklad ukazuje víceřádkový komentář.
/*
This Bicep file assumes the key vault already exists and
is in same subscription and resource group as the deployment.
*/
param existingKeyVaultName string
Deklarace na více řádků
V deklaracích funkcí, polí a objektů teď můžete použít více řádků. Tato funkce vyžaduje rozhraní příkazového řádku Bicep verze 0.7.X nebo vyšší.
V následujícím příkladu resourceGroup() je definice rozdělena na více řádků.
var foo = resourceGroup(
mySubscription,
myRgName)
Ukázky víceřádkových deklarací najdete v polích a objektech.
Související obsah
- Úvod do Bicep najdete v tématu Co je Bicep?
- Datové typy najdete pro Bicep v tématu Datové typy.