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ž true se prostředek vytvoří během nasazení. Když false se 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 true se hodnota zahrne do výstupu nasazení. Když false se 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é.
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.
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
jeinner
. Hodnotaouter
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:
- uživatelem definované typy
- uživatelem definované funkce
- importy v čase kompilace
- experimentální funkce
Další kroky
- Hotové šablony pro mnoho různých typů řešení najdete na stránce Šablony Azure pro rychlý start.
- Podrobnosti o funkcích, které můžete použít v rámci šablony, najdete v tématu Funkce šablony ARM.
- Pokud chcete během nasazování zkombinovat několik šablon, přečtěte si téma Použití propojených a vnořených šablon při nasazování prostředků Azure.
- Doporučení týkající se vytváření šablon najdete v osvědčených postupech pro šablony ARM.
- Odpovědi na běžné otázky najdete v tématu Nejčastější dotazy týkající se šablon ARM.