Podmíněné nasazení v Bicep
Někdy potřebujete volitelně nasadit prostředek nebo modul v Nástroji Bicep. Pomocí klíčového if
slova určete, jestli se prostředek nebo modul nasadí. Hodnota podmínky se přeloží na true nebo false. Pokud je hodnota true, prostředek se vytvoří. 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í neprovádí kaskádovitě na podřízené prostředky. Pokud chcete podmíněně nasadit prostředek a jeho podřízené prostředky, musíte použít stejnou podmínku pro každý typ prostředku.
Školicí materiály
Pokud byste se raději o podmínkách dozvěděli 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.
Podmínka nasazení
Můžete předat hodnotu parametru, která označuje, jestli je prostředek nasazený. Následující příklad podmíněně nasadí zónu DNS.
param deployZone bool
resource dnsZone 'Microsoft.Network/dnszones@2018-05-01' = 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í. V případě explicitních závislostí 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 dojít k chybě nasazení.
Nový nebo existující prostředek
Podmíněné nasazení můžete použít k vytvoření nového prostředku nebo k použití existujícího prostředku. 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 sa 'Microsoft.Storage/storageAccounts@2019-06-01' = if (newOrExisting == 'new') {
name: storageAccountName
location: location
sku: {
name: 'Standard_LRS'
tier: 'Standard'
}
kind: 'StorageV2'
properties: {
accessTier: 'Hot'
}
}
Když je parametr newOrExisting
nastaven na nový, podmínka se vyhodnotí jako true. Účet úložiště se nasadí. Pokud newOrExisting
je ale podmínka nastavená na existující, vyhodnotí se jako false (false) a účet úložiště se nenasadí.
Funkce modulu runtime
Pokud použijete odkaz nebo funkci seznamu s podmíněně nasazeným prostředkem, funkce se vyhodnotí i v případě, že prostředek není nasazený. Pokud funkce odkazuje na prostředek, který neexistuje, zobrazí se chyba.
Pomocí operátoru podmíněného výrazu ?: se ujistěte, že se funkce vyhodnocuje jenom 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@2017-03-30' = 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, '2015-11-01-preview').customerId : null)
}
protectedSettings: {
workspaceKey: ((!empty(logAnalytics)) ? listKeys(logAnalytics, '2015-11-01-preview').primarySharedKey : null)
}
}
}
output mgmtStatus string = ((!empty(logAnalytics)) ? 'Enabled monitoring for VM!' : 'Nothing to enable')
Další kroky
- Projděte si modul Learn Vytváření flexibilních šablon Bicep pomocí podmínek a smyček.
- Doporučení k 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 nástroji Bicep.