Megosztás a következőn keresztül:


Feltételes üzembe helyezések a Bicepben a if kifejezéssel

Ha egy erőforrást vagy modult szeretne telepíteni a Bicepben, használja a if kifejezést. A if kifejezések olyan feltételt tartalmaznak, amely igaz vagy hamis lesz. Ha a if feltétel igaz, az erőforrás üzembe lesz helyezve. Ha az érték hamis, az erőforrás nem jön létre. Az érték csak a teljes erőforrásra vagy modulra alkalmazható.

Megjegyzés:

A feltételes üzembe helyezés nem kaszkádolt a gyermekerőforrásokra. Ha feltételesen üzembe szeretne helyezni egy erőforrást és annak alárendelt erőforrásait, minden erőforrástípusra ugyanazt a feltételt kell alkalmaznia.

Képzési erőforrások

Ha lépésről lépésre szeretne megismerkedni a feltételekkel, olvassa el a rugalmas Bicep-sablonok létrehozása feltételek és hurkok használatával című témakört.

Az üzembe helyezés feltételének meghatározása

A Bicepben feltételesen üzembe helyezhet egy erőforrást úgy, hogy megad egy paramétert, amely meghatározza, hogy az erőforrás telepítve van-e. A feltételt egy if kifejezéssel tesztelheti az erőforrás-deklarációban. Az alábbi példa egy if Bicep-fájlban lévő kifejezés szintaxisát mutatja be. Feltételesen üzembe helyez egy DNS-zónát. Ha deployZone igen true, üzembe helyezi a DNS-zónát. Ha deployZone igen false, akkor kihagyja a DNS-zóna üzembe helyezését.

param deployZone bool

resource dnsZone 'Microsoft.Network/dnsZones@2023-07-01-preview' = if (deployZone) {
  name: 'myZone'
  location: 'global'
}

A következő példa feltételesen üzembe helyez egy modult.

param deployZone bool

module dnsZone 'dnszones.bicep' = if (deployZone) {
  name: 'myZoneModule'
}

A feltételek függőségi deklarációkkal is használhatók. Explicit függőségek esetén az Azure Resource Manager automatikusan eltávolítja azt a szükséges függőségekből, amikor az erőforrás nincs üzembe helyezve. Implicit függőségek esetén a feltételes erőforrás tulajdonságára való hivatkozás engedélyezett, de üzembe helyezési hibát okozhat.

Új vagy meglévő erőforrás

A feltételes üzembe helyezéssel új erőforrást hozhat létre, vagy használhat egy meglévőt. Az alábbi példa bemutatja, hogyan helyezhet üzembe új tárfiókot, vagy hogyan használhat meglévő tárfiókot.

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)

Ha a paraméter newOrExisting új értékre van állítva, a feltétel igaz értéket ad vissza. A tárfiók üzembe lett helyezve. Ellenkező esetben a meglévő tárfiókot használja a rendszer.

Figyelmeztetés:

Ha olyan feltételesen üzembe helyezett erőforrásra hivatkozik, amely nincs üzembe helyezve. Hibaüzenet jelenik meg, amely szerint az erőforrás nincs definiálva a sablonban.

Futtatókörnyezeti függvények

Ha feltételesen üzembe helyezett erőforrással használ referencia- vagy listafüggvényt, akkor a függvény akkor is kiértékelésre kerül, ha az erőforrás nincs üzembe helyezve. Hibaüzenet jelenik meg, ha a függvény nem létező erőforrásra hivatkozik.

A ?: operátor feltételes kifejezéssel győződjön meg arról, hogy a függvény csak az erőforrás üzembe helyezésekor lesz kiértékelve. Az alábbi példasablon bemutatja, hogyan használhatja ezt a függvényt olyan kifejezésekkel, amelyek csak feltételesen érvényesek.

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')

Következő lépések