Přidání podmíněné logiky do šablon ARM
Za určitých podmínek možná budete muset volitelně nasadit prostředek. Běžným případem je přidání nástroje pro vyrovnávání zatížení na virtuálním počítači. Můžete mít například web elektronického obchodování a chcete zajistit, aby tento web dokázal zvládnout zvýšený provoz při velkém výprodeji. Nástroj pro vyrovnávání zatížení je typ prostředku, který můžete přidružit k virtuálnímu počítači. Podmíněným přiřazením pravidla můžete použití nástroje pro vyrovnávání zatížení u daného virtuálního počítače buď povolit, anebo zakázat.
Představte si následující situace:
- Prostředek už existuje: Když v šabloně určíte nějaký prostředek a nasadíte ji, stane se jedna ze dvou věcí. Buď je prostředek nasazen, anebo nasazen není, pokud už existuje. Kontrolu, jestli určitý prostředek existuje, za vás provádí Azure Resource Manager – je to implicitní. Otázka je, jestli tento mechanismus můžete využít ve svůj prospěch, když zvažujete, jak můžete kontrolovat, jestli něco už existuje.
- Logika větvení: Podle toho, jaké parametry předáte do šablony, můžete v době nasazení chtít nasadit jinou sadu prostředků. To, co vyjadřujete, se označuje jako logika větvení. Pokud má parametr určitý typ hodnoty, pak se vybere první větev. Jinak se k nasazení vybere druhá nebo třetí větev. Logika větvení pokračuje tímto způsobem.
Obě výše uvedené situace představují scénáře, ve kterých se používá podmíněná logika. Logika je buď v samotném systému Resource Manageru nebo je to něco, co musíte výslovně vyjádřit.
Podmíněné nasazení
Konstruktor condition
umožňuje vyjádřit, jestli chcete něco nasadit, nebo ne. Jedná se o vlastnost s hodnotou buď true
, nebo false
, kterou připojíte k určitému elementu prostředku. Obvykle byste v šabloně našli condition
konstruktor, který vypadá jako následující JSON:
"resources" : [
{
"condition": "[parameters('shouldDeploy')]"
}
]
Ve výše uvedeném kódu JSON je do prostředku přidána vlastnost condition
. Hodnota této vlastnosti bude vyhodnocena jako hodnota parametru shouldDeploy
.
Hodnocení
Konstruktor lze vyhodnotit dvěma způsoby condition
. Znalost těchto dvou způsobů může ovlivnit to, jak se rozhodnete vyjádřit svou podmíněnou logiku. Jsou to tyto dva různé způsoby:
Hodnota je buď true, anebo false. Podívejme se například na následující konstruktor:
"condition": "[parameters('deployAccount')]"
Hodnota
deployAccount
je parametr, jehož hodnota může být předávána v době nasazení, nebo se může překlopit zpět na výchozí hodnotu. Bez ohledu na použitý přístup je hodnota výhradně buď false, anebo true. Výsledkem pokusu přiřadit jinou hodnotu, která není logickou hodnotou, bude chyba.Existuje výraz nabývající hodnoty true nebo false. Tady místo přiřazení výhradní hodnoty true nebo false do konstruktoru
condition
použijete integrovanou funkci šablonyequals(arg1, arg2)
. Aby byla tato funkce vyhodnocena jako true, musí se hodnotaarg1
rovnat hodnotěarg2
. Váš konstruktorcondition
je teď možné vyjádřit takto:"condition": "[equals(parameters('newOrExisting'),'new')]"
Při použití funkce
equals()
už hodnota, kterou předáte do parametru, nemusí býttrue
nebofalse
. Musí odpovídat druhému argumentu ve funkciequals()
. V předcházejícím příkladu kódu JSON musí hodnota parametrunewOrExisting
odpovídat řetězcinew
, aby byla funkce vyhodnocena jakotrue
.