Feltételes logika beépítése az ARM-sablonba

Befejeződött

Bizonyos körülmények között előfordulhat, hogy opcionális módon szeretne üzembe helyezni egy erőforrást. Gyakori példa a virtuális géphez adott terheléselosztó. Tegyük fel, hogy van egy e-kereskedelmi webhelye, és biztosítani szeretné, hogy a webhely bírja a megnövekedett terhelést egy kiárusítás során. A terheléselosztó olyan erőforrás, amely egy virtuális géphez társítható. Egy feltételes szabály felvételével engedélyezheti vagy letilthatja a terheléselosztó alkalmazását a szóban forgó virtuális géphez.

Vegyük alapul az alábbi helyzeteket:

  • Meglévő erőforrás. Ha megad egy erőforrást egy sablonban, majd üzembe helyezi azt, két eset lehetséges. Az erőforrás üzembe lesz helyezve, vagy nem lesz üzembe helyezve, ha már létezik. Egy erőforrás meglétének ellenőrzését az Azure Resource Manager végzi el Ön helyett, ez implicit feltétel. A kérdés az, hogy előnyére tudja-e fordítani ezt a mechanizmust, amikor azt mérlegeli, hogy hogyan ellenőrizhetné valaminek a meglétét.
  • Elágazásos logika. A sablonnak átadott paraméterektől függően az üzembe helyezéskor az erőforrások más-más halmazát szeretné üzembe helyezni. Ilyenkor egy úgynevezett elágazásos logikát fejez ki. Ha a paraméter egy bizonyos típusú értékkel rendelkezik, válassza ki az első ágat. Ellenkező esetben válassza ki a második vagy harmadik ágat az üzembe helyezéshez. Az elágazó logika ily módon folytatódik.

Mindkét fenti helyzet olyan forgatókönyvet ír le, ahol feltételes logikát alkalmaz. A logika vagy magában a Resource Manager rendszerben működik, vagy explicit módon ki kell fejeznie.

Feltételes üzembe helyezés

A condition szerkezettel kifejezheti, hogy üzembe szeretne-e helyezni valamit. Ez egy true vagy false értékkel rendelkező tulajdonság, amelyet egy erőforráselemhez csatol. A sablonban általában a következő JSON-hoz hasonló szerkezetet talál condition :

"resources" : [
  {
    "condition": "[parameters('shouldDeploy')]"
  }
]

A fenti JSON-ban egy condition tulajdonságot adtunk az erőforráshoz. A tulajdonság értéke a shouldDeploy paraméter kiértékelésének eredménye lesz.

Értékelés

A szerkezet kétféleképpen condition értékelhető ki. Ennek a két módnak az ismerete befolyásolhatja a feltételes logika kifejezési módjának megválasztásában. A két mód a következő:

  • Maga az érték true (igaz) vagy false (hamis). Vegyük például az alábbi szerkezetet:

    "condition": "[parameters('deployAccount')]"
    

    A deployAccount érték egy paraméter, amelynek értéke az üzembe helyezéskor adható át, különben felveszi az alapértelmezett értéket. Az érték a megadás módjától függetlenül szigorúan csak false vagy true lehet. Bármilyen más, nem logikai érték hozzárendelése hibát eredményez.

  • Egy igaz vagy hamis értékű kifejezés van megadva. A condition szerkezethez a konkrét true vagy false érték helyett a beépített equals(arg1, arg2) sablonfüggvény van megadva. Az arg1 értékének egyenlőnek kell lennie az arg2 értékével ahhoz, hogy a függvény a true (igaz) értéket adja vissza. A condition szerkezet ekkor így fejezhető ki:

    "condition": "[equals(parameters('newOrExisting'),'new')]"
    

    Az equals() függvénynek köszönhetően a paraméternek elküldött értéknek már nem kell true-nak vagy false-nak lennie. Meg kell egyeznie az equals() függvény második argumentumával. A fenti JSON-kódban a newOrExisting paraméter értékének a new sztringgel kell megegyeznie ahhoz, hogy a függvény kiértékelésének eredménye true legyen.