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.
Pokud chcete volitelně nasadit prostředek nebo modul v Bicep, použijte výraz if . Výraz if obsahuje podmínku, která se překládá na true nebo false.
if Pokud je podmínka pravdivá, prostředek se nasadí. Pokud je hodnota false, prostředek se nevytvoří. Hodnotu můžete použít pouze pro celý prostředek nebo modul.
Varování
Podmíněné nasazení se nekaskáduje na podřízené prostředky. Pokud chcete podmíněně nasadit prostředek a jeho podřízené prostředky, musíte u každého typu prostředku použít stejnou podmínku.
Diagnostický kód Bicep BCP318 nastane, když se pokusíte získat přístup k vlastnosti podmíněného prostředku, který může mít hodnotu null, pokud prostředek není nasazený. Chcete-li potlačit upozornění nebo zabránit výjimce modulu runtime, použijte operátor null-forgiving nebo operátor safe-dereference. Další informace najdete v tématu BCP318.
Definování podmínky pro nasazení
V Bicep můžete podmíněně nasadit prostředek předáním parametru, který určuje, jestli je prostředek nasazený. Otestujte podmínku pomocí if výrazu v deklaraci prostředku. Následující příklad ukazuje syntaxi výrazu if v souboru Bicep. Podmíněně nasadí zónu DNS (Domain Name System). Když deployZone je true, nasadí zónu DNS. Pokud je deployZonefalse, přeskočí se nasazení zóny DNS.
param deployZone bool
resource dnsZone 'Microsoft.Network/dnsZones@2023-07-01-preview' = if (deployZone) {
name: 'myZone'
location: 'global'
}
Následující příklad podmíněně nasadí modul:
param deployZone bool
module dnsZone 'dnszones.bicep' = if (deployZone) {
name: 'myZoneModule'
}
Můžete použít podmínky s deklaracemi závislostí. U explicitních závislostí je Azure Resource Manager automaticky odebere z požadovaných závislostí, když prostředek není nasazený. U implicitních závislostí je odkazování na vlastnost podmíněného prostředku povolené, ale může způsobit chybu nasazení.
Nový nebo existující prostředek
Pomocí podmíněného nasazení můžete vytvořit nový prostředek nebo použít existující. Následující příklad ukazuje, jak nasadit nový účet úložiště nebo použít existující účet úložiště.
param storageAccountName string
param location string = resourceGroup().location
@allowed([
'new'
'existing'
])
param newOrExisting string = 'new'
resource saNew 'Microsoft.Storage/storageAccounts@2025-06-01' = if (newOrExisting == 'new') {
name: storageAccountName
location: location
sku: {
name: 'Standard_LRS'
}
kind: 'StorageV2'
}
resource saExisting 'Microsoft.Storage/storageAccounts@2025-06-01' existing = if (newOrExisting == 'existing') {
name: storageAccountName
}
output storageAccountId string = ((newOrExisting == 'new') ? saNew.id : saExisting.id)
Pokud je parametr newOrExisting nastaven na nový, podmínka se vyhodnotí jako true. Účet úložiště je nasazen. V opačném případě se použije existující účet úložiště.
Varování
Pokud odkazujete na podmíněně nasazený prostředek, ale prostředek není nasazený, zobrazí se chyba. Chybová zpráva uvádí, že prostředek není v šabloně definován.
Funkce modulu runtime
Pokud použijete odkaz nebo funkci seznamu s prostředkem, který zadáte pro podmíněné nasazení, funkce se vyhodnotí. Pokud prostředek není nasazený, zobrazí se chyba.
Použijte podmíněný výraz ?: operátor k zajištění, aby funkce byla vyhodnocena pouze za podmínek při nasazení prostředku. Následující příklad šablony ukazuje, jak používat tuto funkci s výrazy, které jsou pouze podmíněně platné.
param vmName string
param location string
param logAnalytics string = ''
resource vmName_omsOnboarding 'Microsoft.Compute/virtualMachines/extensions@2025-04-01' = if (!empty(logAnalytics)) {
name: '${vmName}/omsOnboarding'
location: location
properties: {
publisher: 'Microsoft.EnterpriseCloud.Monitoring'
type: 'MicrosoftMonitoringAgent'
typeHandlerVersion: '1.0'
autoUpgradeMinorVersion: true
settings: {
workspaceId: ((!empty(logAnalytics)) ? reference(logAnalytics, '2022-10-01').customerId : null)
}
protectedSettings: {
workspaceKey: ((!empty(logAnalytics)) ? listKeys(logAnalytics, '2022-10-01').primarySharedKey : null)
}
}
}
output mgmtStatus string = ((!empty(logAnalytics)) ? 'Enabled monitoring for VM!' : 'Nothing to enable')
Další kroky
- Doporučení týkající se vytváření souborů Bicep najdete v tématu Osvědčené postupy pro Bicep.
- Pokud chcete vytvořit více instancí prostředku, podívejte se na Iterativní smyčky v Bicep.