Podmíněná nasazení v Bicep s výrazem if
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řil. Hodnotu lze použít pouze pro celý prostředek nebo modul.
Poznámka:
Podmíněné nasazení se kaskádově nespadá do podřízených prostředků. 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.
Školicí materiály
Pokud byste se raději dozvěděli o podmínkách prostřednictvím podrobných pokynů, přečtěte si téma Vytváření flexibilních šablon Bicep pomocí podmínek a smyček.
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ý. Podmínku otestujete 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. Když deployZone
je true
, nasadí zónu DNS. Pokud deployZone
je, false
přeskočí nasazení zóny DNS.
param deployZone bool
resource dnsZone 'Microsoft.Network/dnsZones@2023-07-01-preview' = if (deployZone) {
name: 'myZone'
location: 'global'
}
Další příklad podmíněně nasadí modul.
param deployZone bool
module dnsZone 'dnszones.bicep' = if (deployZone) {
name: 'myZoneModule'
}
Podmínky lze použít s deklaracemi závislostí. U explicitních závislostí ho 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@2023-04-01' = if (newOrExisting == 'new') {
name: storageAccountName
location: location
sku: {
name: 'Standard_LRS'
}
kind: 'StorageV2'
}
resource saExisting 'Microsoft.Storage/storageAccounts@2023-04-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ě se nasadí. V opačném případě se použije existující účet úložiště.
Upozorňující
Pokud odkazujete na podmíněně nasazený prostředek, který není nasazený. Zobrazí se chyba oznamující, že prostředek není v šabloně definován.
Funkce modulu runtime
Pokud použijete odkaz nebo funkci seznamu s prostředkem, který je podmíněně nasazený, funkce se vyhodnotí i v případě, že prostředek není nasazený. Pokud funkce odkazuje na prostředek, který neexistuje, zobrazí se chyba.
Pomocí podmíněného výrazu ?: operátor se ujistěte, že je funkce vyhodnocena pouze pro podmínky 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@2024-03-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
- Projděte si flexibilní šablony Bicep modulu Learn pomocí podmínek a smyček.
- 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, přečtěte si téma Iterativní smyčky v Bicep.