Vysvětlení struktury a syntaxe šablon ARM

Tento článek popisuje strukturu šablony Azure Resource Manager (šablona ARM). Zobrazí různé oddíly šablony a vlastnosti, které jsou v těchto oddílech k dispozici.

Tento článek je určený pro uživatele, kteří znají šablony ARM. Poskytuje podrobné informace o struktuře šablony. Podrobný kurz, který vás provede procesem vytvoření šablony, najdete v tématu Kurz: Vytvoření a nasazení první šablony ARM. Další informace o šablonách ARM prostřednictvím sady modulů Learn s asistencí najdete v tématu Nasazení a správa prostředků v Azure pomocí šablon ARM.

Tip

Bicep je nový jazyk, který nabízí stejné funkce jako šablony ARM, ale se syntaxí, která se snadněji používá. Pokud zvažujete infrastrukturu jako možnosti kódu, doporučujeme podívat se na Bicep.

Informace o prvcích souboru Bicep najdete v tématu Vysvětlení struktury a syntaxe souborů Bicep.

Formát šablon

Šablona má ve své nejjednodušší struktuře následující prvky:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "languageVersion": "",
  "contentVersion": "",
  "apiProfile": "",
  "definitions": { },
  "parameters": { },
  "variables": { },
  "functions": [ ],
  "resources": [ ], /* or "resources": { } with languageVersion 2.0 */
  "outputs": { }
}
Název elementu Povinné Popis
$schema Yes Umístění souboru schématu JSON (JavaScript Object Notation), který popisuje verzi jazyka šablony. Použité číslo verze závisí na rozsahu nasazení a editoru JSON.

Pokud používáte Visual Studio Code s rozšířením Azure Resource Manager tools, použijte pro nasazení skupin prostředků nejnovější verzi:
https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#

Jiné editory (včetně sady Visual Studio) nemusí být schopny toto schéma zpracovat. Pro tyto editory použijte:
https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#

Pro nasazení předplatného použijte:
https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#

Pro nasazení skupin pro správu použijte:
https://schema.management.azure.com/schemas/2019-08-01/managementGroupDeploymentTemplate.json#

Pro nasazení tenanta použijte:
https://schema.management.azure.com/schemas/2019-08-01/tenantDeploymentTemplate.json#
languageVersion No Jazyková verze šablony. Pokud chcete zobrazit vylepšení languageVersion 2.0, podívejte se na languageVersion 2.0.
contentVersion Yes Verze šablony (například 1.0.0.0). Pro tento prvek můžete zadat libovolnou hodnotu. Tato hodnota slouží k dokumentaci významných změn v šabloně. Při nasazování prostředků pomocí šablony je možné tuto hodnotu použít k zajištění, že se používá správná šablona.
apiProfile No Verze rozhraní API, která slouží jako kolekce verzí rozhraní API pro typy prostředků. Tuto hodnotu použijte, abyste nemuseli zadávat verze rozhraní API pro každý prostředek v šabloně. Když zadáte verzi profilu rozhraní API a nezadáte verzi rozhraní API pro typ prostředku, Resource Manager použije verzi rozhraní API pro daný typ prostředku, který je definovaný v profilu.

Vlastnost profilu rozhraní API je zvlášť užitečná při nasazování šablony do různých prostředí, jako je Azure Stack a globální Azure. Pomocí verze profilu rozhraní API se ujistěte, že šablona automaticky používá verze podporované v obou prostředích. Seznam aktuálních verzí profilu rozhraní API a verzí rozhraní API prostředků definovaných v profilu najdete v tématu Profil rozhraní API.

Další informace najdete v tématu Sledování verzí pomocí profilů rozhraní API.
Definice No Schémata, která se používají k ověření hodnot polí a objektů. Definice jsou podporovány pouze v languageVersion 2.0.
parameters No Hodnoty, které se zadají při spuštění nasazení pro přizpůsobení nasazení prostředků.
Proměnné No Hodnoty, které se v šabloně používají jako fragmenty JSON, aby se zjednodušily výrazy jazyka šablony.
Funkce No Uživatelem definované funkce, které jsou k dispozici v rámci šablony.
Zdroje Yes Typy prostředků nasazené nebo aktualizované ve skupině prostředků nebo předplatném.
Výstupy No Hodnoty, které se vrátí po nasazení.

Každý prvek má vlastnosti, které můžete nastavit. Tento článek podrobněji popisuje oddíly šablony.

Definice

definitions V části šablony zadejte schémata použitá k ověřování hodnot polí a objektů. Definitions lze použít pouze s languageVersion 2.0.

"definitions": {
  "<definition-name": {
    "type": "<data-type-of-definition>",
    "allowedValues": [ "<array-of-allowed-values>" ],
    "minValue": <minimum-value-for-int>,
    "maxValue": <maximum-value-for-int>,
    "minLength": <minimum-length-for-string-or-array>,
    "maxLength": <maximum-length-for-string-or-array>,
    "prefixItems": <schema-for-validating-array>,
    "items": <schema-for-validating-array-or-boolean>,
    "properties": <schema-for-validating-object>,
    "additionalProperties": <schema-for-validating-object-or-boolean>,
    "discriminator": <schema-to-apply>,
    "nullable": <boolean>,
    "metadata": {
      "description": "<description-of-the-type-definition>"
    }
  }
}
Název elementu Povinné Popis
název definice Yes Název definice typu. Musí to být platný identifikátor JavaScriptu.
typ Yes Typ definice typu. Povolené typy a hodnoty jsou string, securestring, int, bool, object, secureObject a array. Viz Datové typy v šablonách ARM.
Allowedvalues No Pole povolených hodnot pro definici typu, aby se zajistilo, že je zadána správná hodnota.
Minvalue No Minimální hodnota definic typů int je včetně.
Maxvalue No Maximální hodnota definic typů int je zahrnutá.
Minlength No Minimální délka definic typu řetězce, zabezpečeného řetězce a typu pole je tato hodnota včetně.
Maxlength No Maximální délka definic řetězce, zabezpečeného řetězce a typu pole je tato hodnota včetně.
prefixItems No Schéma pro ověřování prvku pole ve stejném indexu.
položky No Schéma použité pro všechny prvky pole, jehož index je větší než největší index prefixItems omezení nebo logická hodnota pro řízení prvků pole, jehož index je větší než největší index prefixItems omezení.
properties No Schéma pro ověřování objektu.
další vlastnosti No Schéma, které je použito na všechny vlastnosti neuvedené v properties omezení nebo logická hodnota pro přijetí jakékoli vlastnosti, která není definována properties v omezení.
Diskriminátor No Schéma, které se má použít na základě diskriminující vlastnosti.
nullable No Logická hodnota označující, že hodnota může být null nebo vynechána.
description No Popis definice typu, která se zobrazí uživatelům prostřednictvím portálu. Další informace najdete v tématu Komentáře v šablonách.

Příklady použití definic typů najdete v tématu Definice typů v šablonách ARM.

V nástroji Bicep si přečtěte téma Uživatelem definované datové typy.

Parametry

parameters V části šablony určíte, které hodnoty můžete zadat při nasazování prostředků. V šabloně jste omezeni na 256 parametrů . Počet parametrů můžete snížit použitím objektů, které obsahují více vlastností.

Následují dostupné vlastnosti pro parametr:

"parameters": {
  "<parameter-name>" : {
    "type" : "<type-of-parameter-value>",
    "defaultValue": "<default-value-of-parameter>",
    "allowedValues": [ "<array-of-allowed-values>" ],
    "minValue": <minimum-value-for-int>,
    "maxValue": <maximum-value-for-int>,
    "minLength": <minimum-length-for-string-or-array>,
    "maxLength": <maximum-length-for-string-or-array>,
    "prefixItems": <schema-for-validating-array>,
    "items": <schema-for-validating-array-or-boolean>,
    "properties": <schema-for-validating-object>,
    "additionalProperties": <schema-for-validating-object-or-boolean>,
    "discriminator": <schema-to-apply>,
    "nullable": <boolean>,
    "metadata": {
      "description": "<description-of-the parameter>"
    }
  }
}
Název elementu Povinné Popis
název parametru Yes Název parametru Musí to být platný identifikátor JavaScriptu.
typ Yes Typ hodnoty parametru. Povolené typy a hodnoty jsou string, securestring, int, bool, object, secureObject a array. Viz Datové typy v šablonách ARM.
Defaultvalue No Výchozí hodnota parametru, pokud není pro parametr zadaná žádná hodnota.
Allowedvalues No Pole povolených hodnot pro parametr, aby se zajistilo, že je zadaná správná hodnota.
Minvalue No Minimální hodnota parametrů typu int, tato hodnota je inkluzivní.
Maxvalue No Maximální hodnota parametrů typu int, tato hodnota je včetně.
Minlength No Minimální délka parametrů řetězce, zabezpečeného řetězce a typu pole je tato hodnota včetně.
Maxlength No Maximální délka parametrů řetězce, zabezpečeného řetězce a typu pole je tato hodnota včetně.
položky prefixItems No Definice typu pro ověření prvku pole ve stejném indexu. prefixItems je podporován pouze v languageVersion 2.0.
položky No Schéma použité pro všechny prvky pole, jehož index je větší než největší index prefixItems omezení nebo logická hodnota pro řízení prvků pole, jehož index je větší než největší index prefixItems omezení. items je podporován pouze v languageVersion 2.0.
properties No Schéma pro ověřování objektu. properties je podporován pouze v languageVersion 2.0.
další vlastnosti No Schéma, které je použito na všechny vlastnosti neuvedené v properties omezení nebo logická hodnota pro přijetí jakékoli vlastnosti, která není definována properties v omezení. additionalProperties je podporován pouze v languageVersion 2.0.
Diskriminátor No Schéma, které se má použít na základě diskriminující vlastnosti. discriminator je podporován pouze v languageVersion 2.0.
nullable No Logická hodnota označující, že hodnota může být null nebo vynechána. nullable je podporován pouze v languageVersion 2.0.
description No Popis parametru, který se zobrazí uživatelům prostřednictvím portálu. Další informace najdete v tématu Komentáře v šablonách.

Příklady použití parametrů najdete v tématu Parametry v šablonách ARM.

V nástroji Bicep se podívejte na parametry.

Proměnné

variables V části vytvoříte hodnoty, které se dají použít v celé šabloně. Proměnné nemusíte definovat, ale často zjednodušují šablonu tím, že omezují složité výrazy. Formát každé proměnné odpovídá jednomu z datových typů. V šabloně jste omezeni na 256 proměnných .

Následující příklad ukazuje dostupné možnosti pro definování proměnné:

"variables": {
  "<variable-name>": "<variable-value>",
  "<variable-name>": {
    <variable-complex-type-value>
  },
  "<variable-object-name>": {
    "copy": [
      {
        "name": "<name-of-array-property>",
        "count": <number-of-iterations>,
        "input": <object-or-value-to-repeat>
      }
    ]
  },
  "copy": [
    {
      "name": "<variable-array-name>",
      "count": <number-of-iterations>,
      "input": <object-or-value-to-repeat>
    }
  ]
}

Informace o použití copy k vytvoření několika hodnot pro proměnnou najdete v tématu Iterace proměnné.

Příklady použití proměnných najdete v tématu Proměnné v šabloně ARM.

V nástroji Bicep se podívejte na proměnné.

Functions

V rámci šablony můžete vytvářet vlastní funkce. Tyto funkce jsou k dispozici pro použití v šabloně. Obvykle se definují složité výrazy, které nechcete v celé šabloně opakovat. Uživatelem definované funkce můžete vytvořit z výrazů a funkcí podporovaných v šablonách.

Při definování uživatelské funkce platí určitá omezení:

  • Funkce nemá přístup k proměnným.
  • Funkce může používat pouze parametry, které jsou ve funkci definované. Když použijete funkci parametrů v rámci uživatelem definované funkce, budete omezeni na parametry pro tuto funkci.
  • Funkce nemůže volat jiné uživatelem definované funkce.
  • Funkce nemůže použít referenční funkci.
  • Parametry funkce nemohou mít výchozí hodnoty.
"functions": [
  {
    "namespace": "<namespace-for-functions>",
    "members": {
      "<function-name>": {
        "parameters": [
          {
            "name": "<parameter-name>",
            "type": "<type-of-parameter-value>"
          }
        ],
        "output": {
          "type": "<type-of-output-value>",
          "value": "<function-return-value>"
        }
      }
    }
  }
],
Název elementu Povinné Popis
namespace Yes Obor názvů pro vlastní funkce. Slouží k zabránění konfliktům názvů s funkcemi šablony.
název funkce Yes Název vlastní funkce Při volání funkce zkombinujte název funkce s oborem názvů. Pokud například chcete volat funkci s názvem uniqueName v oboru názvů contoso, použijte "[contoso.uniqueName()]".
název parametru No Název parametru, který se má použít v rámci vlastní funkce.
parameter-value No Typ hodnoty parametru. Povolené typy a hodnoty jsou string, securestring, int, bool, object, secureObject a array.
output-type Yes Typ výstupní hodnoty. Výstupní hodnoty podporují stejné typy jako vstupní parametry funkce.
output-value Yes Výraz jazyka šablony, který je vyhodnocen a vrácen z funkce.

Příklady použití vlastních funkcí najdete v tématu Uživatelem definované funkce v šabloně ARM.

V Bicepu se uživatelem definované funkce nepodporují. Bicep podporuje různé funkce a operátory.

Zdroje informací

V části resources definujete prostředky, které se nasadí nebo aktualizují. V šabloně jste omezeni na 800 prostředků .

Prostředky definujete s následující strukturou:

"resources": [
  {
    "condition": "<true-to-deploy-this-resource>",
    "type": "<resource-provider-namespace/resource-type-name>",
    "apiVersion": "<api-version-of-resource>",
    "name": "<name-of-the-resource>",
    "comments": "<your-reference-notes>",
    "location": "<location-of-resource>",
    "dependsOn": [
        "<array-of-related-resource-names>"
    ],
    "tags": {
        "<tag-name1>": "<tag-value1>",
        "<tag-name2>": "<tag-value2>"
    },
    "identity": {
      "type": "<system-assigned-or-user-assigned-identity>",
      "userAssignedIdentities": {
        "<resource-id-of-identity>": {}
      }
    },
    "sku": {
        "name": "<sku-name>",
        "tier": "<sku-tier>",
        "size": "<sku-size>",
        "family": "<sku-family>",
        "capacity": <sku-capacity>
    },
    "kind": "<type-of-resource>",
    "scope": "<target-scope-for-extension-resources>",
    "copy": {
        "name": "<name-of-copy-loop>",
        "count": <number-of-iterations>,
        "mode": "<serial-or-parallel>",
        "batchSize": <number-to-deploy-serially>
    },
    "plan": {
        "name": "<plan-name>",
        "promotionCode": "<plan-promotion-code>",
        "publisher": "<plan-publisher>",
        "product": "<plan-product>",
        "version": "<plan-version>"
    },
    "properties": {
        "<settings-for-the-resource>",
        "copy": [
            {
                "name": ,
                "count": ,
                "input": {}
            }
        ]
    },
    "resources": [
        "<array-of-child-resources>"
    ]
  }
]
Název elementu Povinné Popis
Podmínka No Logická hodnota označující, jestli je prostředek během tohoto nasazení zřízený. Když truese prostředek vytvoří během nasazení. Když falsese prostředek pro toto nasazení přeskočí. Viz podmínka.
typ Yes Typ prostředku. Tato hodnota je kombinací oboru názvů poskytovatele prostředků a typu prostředku (například Microsoft.Storage/storageAccounts). Informace o určení dostupných hodnot najdete v referenčních informacích k šabloně. U podřízeného prostředku závisí formát typu na tom, jestli je vnořený v nadřazený prostředek nebo definovaný mimo nadřazený prostředek. Viz Nastavení názvu a typu pro podřízené prostředky.
apiVersion Yes Verze rozhraní REST API, která se má použít k vytvoření prostředku. Při vytváření nové šablony nastavte tuto hodnotu na nejnovější verzi prostředku, který nasazujete. Dokud šablona funguje podle potřeby, použijte stejnou verzi rozhraní API. Pokud budete dál používat stejnou verzi rozhraní API, minimalizujete riziko, že nová verze rozhraní API změní způsob fungování šablony. Aktualizaci verze rozhraní API zvažte pouze v případech, kdy chcete použít novou funkci, která je zavedena v novější verzi. Informace o určení dostupných hodnot najdete v referenčních informacích k šabloně.
name Yes Název prostředku. Název musí dodržovat omezení komponent identifikátoru URI definovaná v RFC3986. Služby Azure, které zpřístupňují název prostředku externím stranám, ověřují název, aby se ujistily, že se nejedná o pokus o falšování jiné identity. U podřízeného prostředku závisí formát názvu na tom, jestli je vnořený v nadřazený prostředek nebo definovaný mimo nadřazený prostředek. Viz Nastavení názvu a typu pro podřízené prostředky.
komentáře No Poznámky k dokumentaci prostředků v šabloně Další informace najdete v tématu Komentáře v šablonách.
location Různé Podporovaná geografická umístění poskytnutého prostředku. Můžete vybrat libovolné z dostupných umístění, ale obvykle má smysl vybrat umístění, které je blízko vašim uživatelům. Obvykle má také smysl umístit prostředky, které spolu vzájemně spolupracují, do stejné oblasti. Většina typů prostředků vyžaduje umístění, ale některé typy (například přiřazení role) nevyžadují umístění. Viz Nastavení umístění prostředku.
dependsOn No Prostředky, které je potřeba nasadit před nasazením tohoto prostředku. Resource Manager vyhodnotí závislosti mezi prostředky a nasadí je ve správném pořadí. Pokud prostředky nejsou na sobě závislé, nasazují se paralelně. Hodnota může být čárkami oddělený seznam názvů prostředků nebo jedinečných identifikátorů prostředků. Vypište pouze prostředky nasazené v této šabloně. Prostředky, které nejsou definované v této šabloně, už musí existovat. Vyhněte se přidávání zbytečných závislostí, protože můžou zpomalit vaše nasazení a vytvořit cyklické závislosti. Pokyny k nastavení závislostí najdete v tématu Definování pořadí nasazení prostředků v šablonách ARM.
tags No Značky přidružené k prostředku Použijte značky k logickému uspořádání prostředků v rámci vašeho předplatného.
identity No Některé prostředky podporují spravované identity pro prostředky Azure. Tyto prostředky mají objekt identity na kořenové úrovni deklarace prostředku. Můžete nastavit, jestli je identita přiřazená uživatelem nebo systémem. V případě identit přiřazených uživatelem zadejte seznam ID prostředků pro tyto identity. Nastavte klíč na ID prostředku a hodnotu na prázdný objekt. Další informace najdete v tématu Konfigurace spravovaných identit pro prostředky Azure na virtuálním počítači Azure pomocí šablon.
Sku No Některé prostředky povolují hodnoty, které definují skladovou položku pro nasazení. Můžete například zadat typ redundance pro účet úložiště.
Druhu No Některé prostředky umožňují hodnotu, která definuje typ prostředku, který nasazujete. Můžete například zadat typ instance Azure Cosmos DB, která se má vytvořit.
scope No Vlastnost oboru je k dispozici pouze pro typy prostředků rozšíření. Použijte ho při zadávání oboru, který se liší od oboru nasazení. Viz Nastavení rozsahu pro prostředky rozšíření v šablonách ARM.
kopírování No Pokud je potřeba více než jedna instance, počet prostředků, které se mají vytvořit. Výchozí režim je paralelní. Pokud nechcete, aby se všechny prostředky nasazovaly najednou, zadejte sériový režim. Další informace najdete v tématu Vytvoření několika instancí prostředků v Azure Resource Manager.
Plán No Některé prostředky povolují hodnoty, které definují plán nasazení. Můžete například zadat image z marketplace pro virtuální počítač.
properties No Nastavení konfigurace specifické pro prostředky. Hodnoty vlastností jsou stejné jako hodnoty, které zadáte v textu požadavku pro operaci REST API (metoda PUT) pro vytvoření prostředku. Můžete také zadat pole kopírování pro vytvoření několika instancí vlastnosti. Informace o určení dostupných hodnot najdete v referenčních informacích k šabloně.
resources No Podřízené prostředky, které závisí na definovaném prostředku. Zadejte pouze typy prostředků, které jsou povolené schématem nadřazeného prostředku. Závislost na nadřazených prostředcích není předpokládaná. Tuto závislost musíte explicitně definovat. Viz Nastavení názvu a typu pro podřízené prostředky.

Pokud chcete v šablonách JSON ARM podporovat symbolický název Bicep , přidejte languageVersion s verzí 2.0 nebo novější a změňte definici prostředku z pole na objekt.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "languageVersion": "2.0",
  "contentVersion": "1.0.0.0",
  "resources": {
    "<name-of-the-resource>": {
      ...
    }
  }
}

Další informace najdete v tématu Zdroje informací.

V nástroji Bicep najdete informace o prostředcích.

Výstupy

V části outputs zadáte hodnoty, které se vrátí z nasazení. Obvykle se vrací hodnoty z prostředků, které byly nasazeny. V šabloně jste omezeni na 64 výstupů .

Následující příklad ukazuje strukturu definice výstupu:

"outputs": {
  "<output-name>": {
    "condition": "<boolean-value-whether-to-output-value>",
    "type": "<type-of-output-value>",
    "value": "<output-value-expression>",
    "copy": {
      "count": <number-of-iterations>,
      "input": <values-for-the-variable>
    }
  }
}
Název elementu Povinné Popis
output-name Yes Název výstupní hodnoty. Musí to být platný identifikátor JavaScriptu.
Podmínka No Logická hodnota, která označuje, jestli je tato výstupní hodnota vrácena. Když true, hodnota se zahrne do výstupu pro nasazení. Při falsepřeskočí se výstupní hodnota pro toto nasazení. Pokud není zadaný, výchozí hodnota je true.
typ Yes Typ výstupní hodnoty Výstupní hodnoty podporují stejné typy jako vstupní parametry šablony. Pokud jako typ výstupu zadáte securestring , hodnota se nezobrazí v historii nasazení a nedá se načíst z jiné šablony. Pokud chcete použít hodnotu tajného kódu ve více šablonách, uložte tajný kód do Key Vault a odkazujte na tajný klíč v souboru parametrů. Další informace najdete v tématu Použití Azure Key Vault k předání hodnoty zabezpečeného parametru během nasazení.
hodnota No Výraz jazyka šablony, který se vyhodnotí a vrátí jako výstupní hodnota. Zadejte hodnotu nebo kopii.
kopírování No Slouží k vrácení více než jedné hodnoty výstupu. Zadejte hodnotu nebo zkopírujte. Další informace najdete v tématu Iterace výstupu v šablonách ARM.

Příklady použití výstupů najdete v tématu Výstupy v šabloně ARM.

V nástroji Bicep se podívejte na výstupy.

Komentáře a metadata

Máte několik možností, jak do šablony přidat komentáře a metadata.

Komentáře

Pro vložené komentáře můžete použít nebo ///* ... */. V editoru Visual Studio Code uložte soubory parametrů s komentáři jako typ souboru JSON s komentáři (JSONC), jinak se zobrazí chybová zpráva Komentáře nejsou povoleny ve formátu JSON.

Poznámka

Pokud k nasazení šablon s komentáři používáte Azure CLI, použijte verzi 2.3.0 nebo novější a zadejte --handle-extended-json-format přepínač.

{
  "type": "Microsoft.Compute/virtualMachines",
  "apiVersion": "2023-03-01",
  "name": "[variables('vmName')]", // to customize name, change it in variables
  "location": "[parameters('location')]", //defaults to resource group location
  "dependsOn": [ /* storage account and network interface must be deployed first */
    "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]",
    "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]"
  ],

V editoru Visual Studio Code může rozšíření Azure Resource Manager Tools automaticky rozpoznat šablonu ARM a změnit režim jazyka. Pokud se v pravém dolním rohu editoru Visual Studio Code zobrazí šablona Azure Resource Manager, můžete použít vložené komentáře. Vložené komentáře už nejsou označené jako neplatné.

Snímek obrazovky editoru Visual Studio Code v azure Resource Manager režimu šablony

V nástroji Bicep se podívejte na komentáře.

Metadata

Objekt můžete přidat metadata téměř kamkoli do šablony. Resource Manager objekt ignoruje, ale editor JSON vás může upozornit, že vlastnost není platná. V objektu definujte vlastnosti, které potřebujete.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "metadata": {
    "comments": "This template was developed for demonstration purposes.",
    "author": "Example Name"
  },

Pro parameterspřidejte metadata objekt s description vlastností .

"parameters": {
  "adminUsername": {
    "type": "string",
    "metadata": {
      "description": "User name for the Virtual Machine."
    }
  },

Při nasazování šablony prostřednictvím portálu se text, který zadáte v popisu, automaticky použije jako tip pro daný parametr.

Snímek obrazovky zobrazující tip parametru v Azure Portal

Pro resourcespřidejte comments prvek nebo metadata objekt. Následující příklad ukazuje jak element, comments tak metadata objekt.

"resources": [
  {
    "type": "Microsoft.Storage/storageAccounts",
    "apiVersion": "2022-09-01",
    "name": "[format('{0}{1}', 'storage', uniqueString(resourceGroup().id))]",
    "comments": "Storage account used to store VM disks",
    "location": "[parameters('location')]",
    "metadata": {
      "comments": "These tags are needed for policy compliance."
    },
    "tags": {
      "Dept": "[parameters('deptName')]",
      "Environment": "[parameters('environment')]"
    },
    "sku": {
      "name": "Standard_LRS"
    },
    "kind": "Storage",
    "properties": {}
  }
]

Pro outputspřidejte metadata objekt do výstupní hodnoty.

"outputs": {
  "hostname": {
    "type": "string",
    "value": "[reference(variables('publicIPAddressName')).dnsSettings.fqdn]",
    "metadata": {
      "comments": "Return the fully qualified domain name"
    }
  },

Objekt nelze přidat metadata do uživatelem definovaných funkcí.

Víceřádkové řetězce

Řetězec můžete rozdělit na více řádků. Podívejte se například na location vlastnost a jeden z komentářů v následujícím příkladu JSON.

Poznámka

K nasazení šablon s víceřádkovými řetězci použijte Azure PowerShell nebo Azure CLI. Pro rozhraní příkazového řádku použijte verzi 2.3.0 nebo novější a zadejte --handle-extended-json-format přepínač.

Víceřádkové řetězce se nepodporují, když šablonu nasazujete prostřednictvím Azure Portal, kanálu DevOps nebo rozhraní REST API.

{
  "type": "Microsoft.Compute/virtualMachines",
  "apiVersion": "2023-03-01",
  "name": "[variables('vmName')]", // to customize name, change it in variables
  "location": "[
    parameters('location')
    ]", //defaults to resource group location
  /*
    storage account and network interface
    must be deployed first
  */
  "dependsOn": [
    "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]",
    "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]"
  ],

V bicepu si přečtěte víceřádkové řetězce.

languageVersion 2.0

Poznámka

Použití funkce languageVersion , která končí -experimental na, se v produkčním prostředí nedoporučuje, protože experimentální funkce je možné kdykoli změnit.

Poznámka

Aktuální verze rozšíření Azure Resource Manager Tools pro Visual Studio Code nerozpoznává vylepšení vytvořená v languageVersion 2.0.

Pokud chcete použít languageVersion 2.0, přidejte "languageVersion": "2.0" do šablony:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "languageVersion": "2.0",
  "contentVersion": "1.0.0.0",
  "resources": {
    "<name-of-the-resource>": {
      ...
    }
  }
}

Vylepšení a změny, které jsou součástí languageVersion 2.0:

  • V šabloně ARM JSON použijte symbolický název. Další informace najdete v tématu Použití symbolického názvu.
  • Ve smyčce kopírování prostředků použijte symbolický název. Viz Použití symbolického názvu.
  • V polích použijte symbolický název dependsOn . Viz DependsOn a Depend on resources in a loop.
  • Místo názvu prostředku ve reference funkci použijte symbolický název. Viz reference.
  • Funkce references(), která vrací pole objektů představujících stavy modulu runtime kolekce prostředků. Podívejte se na odkazy.
  • Pomocí vlastnosti existujícího prostředku můžete deklarovat existující prostředky, které arm může číst, a ne nasazovat prostředek. Viz Deklarace existujících prostředků.
  • Vytváření uživatelsky definovaných typů Viz Definice typu.
  • Další omezení ověření typu agregace, která se mají použít v parametrech a výstupech.
  • Výchozí hodnota vlastnosti expressionEvaluationOptions je inner. Hodnota outer je zablokovaná. Viz Obor vyhodnocení výrazů ve vnořených šablonách.
  • Funkce deployment vrátí omezenou podmnožinu vlastností. Viz nasazení.
  • Pokud se prostředek Deployments používá v nasazení se symbolickým názvem, použijte apiVersion 2020-09-01 nebo novější.
  • V definici prostředku už není potřeba dvojité uniknutí hodnot ve výrazu. Viz Řídicí znaky.

Další kroky