Vysvětlení struktury a syntaxe šablon ARM

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

Tento článek je určený pro uživatele, kteří mají zkušenosti se šablonami 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 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 uvažujete o infrastruktuře jako možnostech kódu, doporučujeme se podívat na Bicep.

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

Formát šablony

V nejjednodušší struktuře má šablona 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 prvku Požadováno Popis
$schema Ano 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 nástrojů Azure Resource Manageru, použijte nejnovější verzi pro nasazení skupin prostředků:
https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#

Jiné editory (včetně sady Visual Studio) nemusí 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í jazykaVersion 2.0, podívejte se na languageVersion 2.0.
contentVersion Ano Verze šablony (například 1.0.0.0).0) Pro tento prvek můžete zadat libovolnou hodnotu. Pomocí této hodnoty můžete zdokumentovat významné změny v šabloně. Při nasazování prostředků pomocí šablony je možné tuto hodnotu použít k zajištění toho, aby byla použita 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ě. Pokud zadáte verzi profilu rozhraní API a nezadáte verzi rozhraní API pro typ prostředku, Resource Manager použije verzi rozhraní API pro tento typ prostředku, který je definován v profilu.

Vlastnost profilu rozhraní API je užitečná hlavně 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 vaš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 části 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 jazyce LanguageVersion 2.0.
parameters No Hodnoty zadané 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 pro zjednodušení výrazů jazyka šablony.
funkce No Uživatelem definované funkce, které jsou k dispozici v rámci šablony.
prostředky Ano Typy prostředků, které se nasazují nebo aktualizují ve skupině prostředků nebo předplatném.
výstupy No Hodnoty vrácené po nasazení

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

Definice

definitions V části šablony zadejte schémata použitá k ověřování hodnot pole 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 prvku Požadováno Popis
název definice Ano Název definice typu. musí představovat platný identifikátor JavaScriptu.
type Ano 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 zajistěte, aby byla zadána správná hodnota.
minValue No Minimální hodnota pro definice int type, tato hodnota je inkluzivní.
maxValue No Maximální hodnota definic typu int, tato hodnota je inkluzivní.
minLength No Minimální délka definic řetězců, zabezpečených řetězců a typů pole je tato hodnota inkluzivní.
maxLength No Maximální délka definic řetězců, zabezpečených řetězců a typů polí je tato hodnota inkluzivní.
prefixItems No Schéma pro ověřování elementu 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, jejichž index je větší než největší index prefixItems omezení.
vlastnosti No Schéma pro ověřování objektu.
additionalProperties No Schéma použité pro všechny vlastnosti, které nejsou uvedeny 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ě nediskriminační 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 bicep najdete informace o datových typech definovaných uživatelem.

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 pomocí 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 prvku Požadováno Popis
název parametru Ano Název parametru. musí představovat platný identifikátor JavaScriptu.
type Ano 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 pro parametr není 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 inkluzivní.
minLength No Minimální délka parametrů řetězce, zabezpečeného řetězce a typu pole je tato hodnota inkluzivní.
maxLength No Maximální délka parametrů řetězce, zabezpečeného řetězce a typu pole je tato hodnota inkluzivní.
prefixItems No Definice typu pro ověřování elementu 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, jejichž index je větší než největší index prefixItems omezení. items je podporován pouze v languageVersion 2.0.
vlastnosti No Schéma pro ověřování objektu. properties je podporován pouze v languageVersion 2.0.
additionalProperties No Schéma použité pro všechny vlastnosti, které nejsou uvedeny 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ě nediskriminační 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 bicep si prohlédněte parametry.

Proměnné

variables V části vytvoříte hodnoty, které lze použít v celé šabloně. Nemusíte definovat proměnné, ale často zjednodušují šablonu omezením složitých výrazů. 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 naleznete v tématu Iterace proměnné.

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

V bicep se podívejte na proměnné.

Funkce

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

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

  • Funkce nemá přístup k proměnným.
  • Funkce může používat pouze parametry definované ve funkci. Pokud použijete funkci parametrů v rámci uživatelem definované funkce, budete omezeni na parametry této funkce.
  • Funkce nemůže volat jiné uživatelem definované funkce.
  • Funkce nemůže použít referenční funkci.
  • Parametry pro funkci nemůžou 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 prvku Požadováno Popis
namespace Ano Obor názvů pro vlastní funkce Slouží k zabránění konfliktům názvů s funkcemi šablony.
function-name Ano Název vlastní funkce. Při volání funkce zkombinujte název funkce s oborem názvů. Pokud například chcete volat funkci pojmenovanou 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 Ano Typ výstupní hodnoty Výstupní hodnoty podporují stejné typy jako vstupní parametry funkce.
output-value Ano Výraz jazyka šablony, který se vyhodnotí a vrátí z funkce.

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

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

Zdroje informací

resources V části definujete prostředky, které se nasazují 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 prvku Požadováno Popis
condition No Logická hodnota, která označuje, 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.
type Ano 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ě. Formát podřízeného prostředku závisí na tom, jestli je vnořený do nadřazeného prostředku nebo definovaný mimo nadřazený prostředek. Viz Nastavení názvu a typu pro podřízené prostředky.
apiVersion Ano 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. Pokud šablona funguje podle potřeby, pokračujte ve stejné verzi rozhraní API. Když budete dál používat stejnou verzi rozhraní API, minimalizujete riziko nové verze rozhraní API, která mění způsob fungování šablony. Pokud chcete použít novou funkci, která je zavedena v novější verzi, zvažte aktualizaci verze rozhraní API. Informace o určení dostupných hodnot najdete v referenčních informacích k šabloně.
name Ano 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ý do nadřazeného prostředku nebo definovaný mimo nadřazený prostředek. Viz Nastavení názvu a typu pro podřízené prostředky.
komentáře No Poznámky pro dokumentaci prostředků v šabloně Další informace najdete v tématu Komentáře v šablonách.
location Je to různé. Podporovaná geografická umístění poskytnutého prostředku. Můžete vybrat libovolné z dostupných umístění, ale obvykle je vhodné vybrat umístění, které je blízko vašim uživatelům. Obvykle je také vhodné umístit prostředky, které vzájemně komunikují ve 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é musí být nasazeny 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 nejsou prostředky závislé na sobě, nasadí se paralelně. Hodnota může být čárkami oddělený seznam názvů prostředků nebo jedinečných identifikátorů prostředků. Zobrazí seznam pouze prostředků nasazených v této šabloně. Prostředky, které nejsou definovány v této šabloně, už musí existovat. Vyhněte se přidávání zbytečných závislostí, protože mohou zpomalit nasazení a vytvářet cyklické závislosti. Pokyny k nastavení závislostí najdete v tématu Definování pořadí nasazení prostředků v šablonách ARM.
značky No Značky přidružené k prostředku Značky můžete použít 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émově přiřazená. Pro identity přiřazené uživatelem zadejte seznam ID prostředků pro 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 umožňují hodnoty, které definují skladovou položku k nasazení. Můžete například zadat typ redundance pro účet úložiště.
kind No Některé prostředky umožňují hodnotu, která definuje typ nasazeného prostředku. Můžete například zadat typ instance služby Azure Cosmos DB, který se má vytvořit.
rozsah 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í oboru pro prostředky rozšíření v šablonách ARM.
kopírování No Pokud je potřeba více instancí, počet prostředků, které se mají vytvořit. Výchozí režim je paralelní. Pokud nechcete, aby se všechny prostředky nebo prostředky nasazovály současně, zadejte sériový režim. Další informace najdete v tématu Vytvoření několika instancí prostředků v Azure Resource Manageru.
plán No Některé prostředky umožňují hodnoty, které definují plán nasazení. Můžete například zadat image marketplace pro virtuální počítač.
vlastnosti 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) k 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ě.
prostředky No Podřízené prostředky, které závisí na definovaném prostředku. Zadejte pouze typy prostředků, které jsou povoleny schématem nadřazeného prostředku. Závislost na nadřazený prostředek není implicitní. Tuto závislost musíte explicitně definovat. Viz Nastavení názvu a typu pro podřízené prostředky.

Pokud chcete podporovat symbolický název Bicep v šablonách JSON ARM, přidejte languageVersion ho s verzí 2.0 nebo novějším 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 Bicep se podívejte na prostředky.

Výstupy

outputs V části zadáte hodnoty, které se vrátí z nasazení. Obvykle vracíte hodnoty z nasazených prostředků. 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 prvku Požadováno Popis
output-name Ano Název výstupní hodnoty musí představovat platný identifikátor JavaScriptu.
condition No Logická hodnota, která označuje, zda je vrácena tato výstupní hodnota. Pokud truese hodnota zahrne do výstupu nasazení. Když falsese výstupní hodnota pro toto nasazení přeskočí. Pokud není zadána, výchozí hodnota je true.
type Ano Typ výstupní hodnoty Výstupní hodnoty podporují stejné typy jako vstupní parametry šablony. Pokud pro typ výstupu zadáte zabezpečený řetězec , hodnota se v historii nasazení nezobrazí a nelze ji načíst z jiné šablony. Pokud chcete použít hodnotu tajného kódu ve více než jedné šabloně, uložte tajný kód do služby Key Vault a odkazujte na tajný kód v souboru parametrů. Další informace najdete v tématu Použití služby Azure Key Vault k předání hodnoty zabezpečeného parametru během nasazování.
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 pro výstup. 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 Bicep najdete výstupy.

Komentáře a metadata

Do šablony můžete přidat komentáře a metadata.

Komentáře

Pro vložené komentáře můžete použít buď // nebo /* ... */. V editoru Visual Studio Code uložte soubory parametrů s komentáři jako soubor JSON s typem souboru JSONC (Comments not permitted in JSONC). V opačném případě se zobrazí chybová zpráva o tom, že komentáře nejsou ve formátu JSON povolené.

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 Manageru, 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 režimu šablony Azure Resource Manageru

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

Metadata

Objekt můžete přidat metadata téměř kdekoli v šabloně. Resource Manager objekt ignoruje, ale váš 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 parameters, přidat 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 tento parametr.

Snímek obrazovky znázorňující tip parametru na webu Azure Portal

Pro resources, přidat comments prvek nebo metadata objekt. Následující příklad ukazuje comments prvek i 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 outputs, přidat 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 několik řádků. Podívejte se například na location vlastnost a jeden z komentářů v následujícím příkladu JSON.

Poznámka:

Pokud chcete nasadit šablony 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 nejsou podporovány při nasazování šablony prostřednictvím webu 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 bicep se podívejte na víceřádkové řetězce.

languageVersion 2.0

Poznámka:

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

Poznámka:

Aktuální verze rozšíření Nástroje Azure Resource Manageru pro Visual Studio Code nerozpozná vylepšení jazyka LanguageVersion 2.0.

Pokud chcete použít languageVersion 2.0, přidejte "languageVersion": "2.0" ji 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:

  • Použijte symbolický název v šabloně JSON ARM. Další informace naleznete 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 Závisí na prostředcích ve smyčce.
  • 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ů. Viz odkazy.
  • Pomocí vlastnosti existujícího prostředku deklarujte existující prostředky pro ARM, aby se místo nasazení prostředku načetl. Viz Deklarujte existující prostředky.
  • Vytvořte uživatelem definované typy. Viz definice typu.
  • Další omezení ověření agregovaného typu, která se mají použít v parametrech a výstupech.
  • Výchozí hodnota vlastnosti expressionEvaluationOptions je inner. Hodnota outer je blokovaná. Viz obor vyhodnocení výrazu 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í symbolického názvu, použijte apiVersion 2020-09-01 nebo novější.
  • V definici prostředku už nepotřebujete dvojité eskapace hodnot v rámci výrazu. Viz řídicí znaky.

Použití některé z následujících funkcí Bicep automaticky povolí generování kódu verze 2.0:

Další kroky