Feltételes logika beépítése az ARM-sablonba
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ítettequals(arg1, arg2)
sablonfüggvény van megadva. Azarg1
értékének egyenlőnek kell lennie azarg2
értékével ahhoz, hogy a függvény a true (igaz) értéket adja vissza. Acondition
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 kelltrue
-nak vagyfalse
-nak lennie. Meg kell egyeznie azequals()
függvény második argumentumával. A fenti JSON-kódban anewOrExisting
paraméter értékének anew
sztringgel kell megegyeznie ahhoz, hogy a függvény kiértékelésének eredményetrue
legyen.