Syntaxe a výrazy v šablonách ARM

Základní syntaxe šablony Azure Resource Manager (šablona ARM) je JavaScript Object Notation (JSON). Můžete však použít výrazy k rozšiřování hodnot JSON dostupných v rámci šablony. Výrazy začínají a končí závorkami [ a ] v uvedeném pořadí. Hodnota výrazu se vyhodnocuje po nasazení šablony. Výraz může vrátit řetězec, celé číslo, logickou hodnotu, pole nebo objekt.

Výraz šablony nemůže být delší než 24 576 znaků.

Použití funkcí

Azure Resource Manager poskytuje funkce , které můžete použít v šabloně. Následující příklad ukazuje výraz, který používá funkci ve výchozí hodnotě parametru:

"parameters": {
  "location": {
    "type": "string",
    "defaultValue": "[resourceGroup().location]"
  }
},

Syntaxe v rámci výrazu resourceGroup() volá jednu z funkcí, které správce prostředků poskytují pro použití v rámci šablony. V tomto případě je to funkce Resource . Stejně jako v jazyce JavaScript jsou volání funkcí formátována jako functionName(arg1,arg2,arg3) . Syntaxe .location načte jednu vlastnost z objektu vráceného touto funkcí.

Funkce šablon a jejich parametry rozlišují velká a malá písmena. Například Správce prostředků přeložit variables('var1') a VARIABLES('VAR1') jako stejný. Je-li vyhodnocena, pokud funkce výslovně nemění velká a malá písmena (například toUpper nebo toLower ), funkce zachová případ. Některé typy prostředků můžou mít požadavky na případy, které jsou oddělené od způsobu, jakým se funkce vyhodnocují.

Chcete-li předat řetězcovou hodnotu jako parametr funkci, použijte jednoduché uvozovky.

"name": "[concat('storage', uniqueString(resourceGroup().id))]"

Většina funkcí funguje stejně, ať už je nasazená do skupiny prostředků, předplatného, skupiny pro správu nebo tenanta. Následující funkce mají omezení na základě rozsahu:

  • skupina prostředků se dá použít jenom v nasazeních do skupiny prostředků.
  • ResourceID -lze použít v jakémkoli oboru, ale platné parametry se mění v závislosti na rozsahu.
  • předplatné – dá se použít jenom v nasazeních do skupiny prostředků nebo předplatného.

Řídicí znaky

Chcete-li, aby byl řetězcový literál začínat levou hranatou závorkou [ a končit pravou závorkou ] , ale nebyl interpretován jako výraz, přidejte další hranatou závorku, která zahájí řetězec s [[ . Například proměnná:

"demoVar1": "[[test value]"

Přeloží na [test value] .

Nicméně pokud literální řetězec nekončí závorkou, nezařídí první vymezovač. Například proměnná:

"demoVar2": "[test] value"

Přeloží na [test] value .

Chcete-li ve výrazu, jako je například přidání objektu JSON do šablony, řídicí dvojité uvozovky, použijte zpětné lomítko.

"tags": {
    "CostCenter": "{\"Dept\":\"Finance\",\"Environment\":\"Production\"}"
},

Při předávání hodnot parametrů závisí použití řídicích znaků na místě, kde je zadána hodnota parametru. Pokud nastavíte výchozí hodnotu v šabloně, budete potřebovat další levou hranatou závorku.

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "demoParam1":{
            "type": "string",
            "defaultValue": "[[test value]"
        }
    },
    "resources": [],
    "outputs": {
        "exampleOutput": {
            "type": "string",
            "value": "[parameters('demoParam1')]"
        }
    }
}

Použijete-li výchozí hodnotu, šablona se vrátí [test value] .

Nicméně pokud předáte hodnotu parametru prostřednictvím příkazového řádku, znaky jsou interpretovány doslova. Nasazování předchozí šablony pomocí:

New-AzResourceGroupDeployment -ResourceGroupName demoGroup -TemplateFile azuredeploy.json -demoParam1 "[[test value]"

Vrací objekt [[test value]. Místo toho použijte:

New-AzResourceGroupDeployment -ResourceGroupName demoGroup -TemplateFile azuredeploy.json -demoParam1 "[test value]"

Stejné formátování platí při předávání hodnot ze souboru parametrů. Znaky jsou interpretovány doslova. Při použití s předchozí šablonou se vrátí následující soubor parametrů [test value] :

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "demoParam1": {
            "value": "[test value]"
        }
   }
}

Hodnoty Null

Pokud chcete nastavit vlastnost na hodnotu null, můžete použít null nebo [json('null')]. Funkce JSON vrátí prázdný objekt, když zadáte null jako parametr. V obou případech šablony Správce prostředků považují za, jako by vlastnost nebyla přítomna.

"stringValue": null,
"objectValue": "[json('null')]"

Další kroky