Přidání podmíněné logiky do šablon ARM

Dokončeno

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 šablony equals(arg1, arg2). Aby byla tato funkce vyhodnocena jako true, musí se hodnota arg1 rovnat hodnotě arg2. Váš konstruktor condition 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ýt true nebo false. Musí odpovídat druhému argumentu ve funkci equals(). V předcházejícím příkladu kódu JSON musí hodnota parametru newOrExisting odpovídat řetězci new, aby byla funkce vyhodnocena jako true.