Opis struktury i składni szablonów usługi ARM
W tym artykule opisano strukturę szablonu usługi Azure Resource Manager (szablon usługi ARM). Przedstawia on różne sekcje szablonu i właściwości, które są dostępne w tych sekcjach.
Ten artykuł jest przeznaczony dla użytkowników, którzy znają szablony usługi ARM. Zawiera szczegółowe informacje o strukturze szablonu. Aby zapoznać się z samouczkiem krok po kroku, który przeprowadzi Cię przez proces tworzenia szablonu, zobacz Samouczek: tworzenie i wdrażanie pierwszego szablonu usługi ARM. Aby dowiedzieć się więcej o szablonach usługi ARM za pomocą zestawu z przewodnikiem modułów learn, zobacz Wdrażanie zasobów na platformie Azure i zarządzanie nimi przy użyciu szablonów usługi ARM.
Porada
Bicep to nowy język, który oferuje te same możliwości co szablony usługi ARM, ale ze składnią, która jest łatwiejsza do użycia. Jeśli rozważasz infrastrukturę jako opcje kodu, zalecamy zapoznanie się z kodem Bicep.
Aby dowiedzieć się więcej o elementach pliku Bicep, zobacz Omówienie struktury i składni plików Bicep.
Template format (Format szablonu)
W najprostszej strukturze szablon ma następujące elementy:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "",
"apiProfile": "",
"parameters": { },
"variables": { },
"functions": [ ],
"resources": [ ],
"outputs": { }
}
Nazwa elementu | Wymagane | Opis |
---|---|---|
$schema | Tak | Lokalizacja pliku schematu JavaScript Object Notation (JSON), który opisuje wersję języka szablonu. Używany numer wersji zależy od zakresu wdrożenia i edytora JSON. Jeśli używasz Visual Studio Code z rozszerzeniem narzędzi usługi Azure Resource Manager, użyj najnowszej wersji wdrożeń grup zasobów: https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json# Inne edytory (w tym Visual Studio) mogą nie być w stanie przetworzyć tego schematu. W przypadku tych edytorów użyj: https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json# W przypadku wdrożeń subskrypcji użyj: https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json# W przypadku wdrożeń grup zarządzania użyj: https://schema.management.azure.com/schemas/2019-08-01/managementGroupDeploymentTemplate.json# W przypadku wdrożeń dzierżawy użyj: https://schema.management.azure.com/schemas/2019-08-01/tenantDeploymentTemplate.json# |
contentVersion | Tak | Wersja szablonu (na przykład 1.0.0.0). Możesz podać dowolną wartość dla tego elementu. Ta wartość służy do dokumentowania znaczących zmian w szablonie. Podczas wdrażania zasobów przy użyciu szablonu można użyć tej wartości, aby upewnić się, że jest używany właściwy szablon. |
apiProfile | Nie | Wersja interfejsu API, która służy jako kolekcja wersji interfejsu API dla typów zasobów. Użyj tej wartości, aby uniknąć konieczności określania wersji interfejsu API dla każdego zasobu w szablonie. Po określeniu wersji profilu interfejsu API i nie określisz wersji interfejsu API dla typu zasobu, Resource Manager używa wersji interfejsu API dla tego typu zasobu zdefiniowanego w profilu. Właściwość profilu interfejsu API jest szczególnie przydatna podczas wdrażania szablonu w różnych środowiskach, takich jak Azure Stack i globalna platforma Azure. Użyj wersji profilu interfejsu API, aby upewnić się, że szablon automatycznie używa wersji obsługiwanych w obu środowiskach. Aby uzyskać listę bieżących wersji profilu interfejsu API i wersji interfejsu API zasobów zdefiniowanych w profilu, zobacz Profil interfejsu API. Aby uzyskać więcej informacji, zobacz Śledzenie wersji przy użyciu profilów interfejsu API. |
parameters | Nie | Wartości podane podczas wdrażania w celu dostosowania wdrożenia. |
Zmiennych | Nie | Wartości, które są używane jako fragmenty JSON w szablonie, aby uprościć wyrażenia języka szablonu. |
Funkcje | Nie | Funkcje zdefiniowane przez użytkownika, które są dostępne w szablonie. |
Zasobów | Tak | Typy zasobów, które są wdrażane lub aktualizowane w grupie zasobów lub subskrypcji. |
Wyjść | Nie | Wartości zwracane po wdrożeniu. |
Każdy element ma właściwości, które można ustawić. W tym artykule opisano bardziej szczegółowo sekcje szablonu.
Parametry
parameters
W sekcji szablonu określ wartości, które można wprowadzić podczas wdrażania zasobów. W szablonie są ograniczone do 256 parametrów . Liczbę parametrów można zmniejszyć przy użyciu obiektów zawierających wiele właściwości.
Dostępne są następujące właściwości parametrów:
"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-parameters>,
"metadata": {
"description": "<description-of-the parameter>"
}
}
}
Nazwa elementu | Wymagane | Opis |
---|---|---|
nazwa-parametru | Tak | Nazwa parametru. Musi być prawidłowym identyfikatorem języka JavaScript. |
typ | Tak | Typ wartości parametru. Dozwolone typy i wartości to ciąg, securestring, int, bool, object, secureObject i array. Zobacz Typy danych w szablonach usługi ARM. |
Defaultvalue | Nie | Wartość domyślna parametru, jeśli dla parametru nie zostanie podana żadna wartość. |
Allowedvalues | Nie | Tablica dozwolonych wartości parametru, aby upewnić się, że podano odpowiednią wartość. |
Minvalue | Nie | Minimalna wartość parametrów typu int, ta wartość jest inkluzywna. |
Maxvalue | Nie | Maksymalna wartość parametrów typu int, ta wartość jest inkluzywna. |
Minlength | Nie | Minimalna długość parametrów ciągu, bezpiecznego ciągu i typu tablicy, ta wartość jest inkluzywna. |
Maxlength | Nie | Maksymalna długość parametrów ciągu, bezpiecznego ciągu i typu tablicy jest inkluzywna. |
description (opis) | Nie | Opis parametru wyświetlanego użytkownikom za pośrednictwem portalu. Aby uzyskać więcej informacji, zobacz Komentarze w szablonach. |
Aby zapoznać się z przykładami używania parametrów, zobacz Parametry w szablonach usługi ARM.
W pliku Bicep zobacz parametry.
Zmienne
variables
W sekcji skonstruujesz wartości, które mogą być używane w całym szablonie. Nie trzeba definiować zmiennych, ale często upraszczają szablon przez zmniejszenie złożonych wyrażeń. Format każdej zmiennej jest zgodny z jednym z typów danych. W szablonie są ograniczone do 256 zmiennych .
W poniższym przykładzie przedstawiono dostępne opcje definiowania zmiennej:
"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>
}
]
}
Aby uzyskać informacje na temat używania copy
metody do tworzenia kilku wartości dla zmiennej, zobacz Iteracja zmiennej.
Przykłady używania zmiennych można znaleźć w temacie Zmienne w szablonie usługi ARM.
W pliku Bicep zobacz zmienne.
Funkcje
W szablonie możesz utworzyć własne funkcje. Te funkcje są dostępne do użycia w szablonie. Zazwyczaj definiujesz skomplikowane wyrażenia, których nie chcesz powtarzać w całym szablonie. Funkcje zdefiniowane przez użytkownika są tworzone na podstawie wyrażeń i funkcji obsługiwanych w szablonach.
Podczas definiowania funkcji użytkownika istnieją pewne ograniczenia:
- Funkcja nie może uzyskać dostępu do zmiennych.
- Funkcja może używać tylko parametrów zdefiniowanych w funkcji. Jeśli używasz funkcji parameters w funkcji zdefiniowanej przez użytkownika, masz ograniczenie do parametrów dla tej funkcji.
- Funkcja nie może wywoływać innych funkcji zdefiniowanych przez użytkownika.
- Funkcja nie może używać funkcji reference.
- Parametry funkcji nie mogą mieć wartości domyślnych.
"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>"
}
}
}
}
],
Nazwa elementu | Wymagane | Opis |
---|---|---|
namespace | Tak | Przestrzeń nazw dla funkcji niestandardowych. Użyj polecenia , aby uniknąć konfliktów nazewnictwa z funkcjami szablonu. |
nazwa-funkcji | Tak | Nazwa funkcji niestandardowej. Podczas wywoływania funkcji połącz nazwę funkcji z przestrzenią nazw. Aby na przykład wywołać funkcję o nazwie uniqueName w przestrzeni nazw contoso, użyj polecenia "[contoso.uniqueName()]" . |
nazwa-parametru | Nie | Nazwa parametru, który ma być używany w funkcji niestandardowej. |
parametr-wartość | Nie | Typ wartości parametru. Dozwolone typy i wartości to ciąg, securestring, int, bool, object, secureObject i array. |
typ danych wyjściowych | Tak | Typ wartości wyjściowej. Wartości wyjściowe obsługują te same typy co parametry wejściowe funkcji. |
output-value | Tak | Wyrażenie języka szablonu, które jest oceniane i zwracane z funkcji. |
Przykłady używania funkcji niestandardowych można znaleźć w temacie Funkcje zdefiniowane przez użytkownika w szablonie usługi ARM.
W aplikacji Bicep funkcje zdefiniowane przez użytkownika nie są obsługiwane. Bicep obsługuje różne funkcje i operatory.
Zasoby
resources
W sekcji zdefiniujesz zasoby, które są wdrażane lub aktualizowane. W szablonie jest ograniczonych do 800 zasobów .
Zasoby są definiowane z następującą strukturą:
"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>"
]
}
]
Nazwa elementu | Wymagane | Opis |
---|---|---|
Warunek | Nie | Wartość logiczna wskazująca, czy zasób zostanie zainicjowany podczas tego wdrożenia. Gdy true podczas wdrażania zostanie utworzony zasób. Gdy false zasób zostanie pominięty dla tego wdrożenia. Zobacz warunek. |
typ | Tak | Typ zasobu. Ta wartość jest kombinacją przestrzeni nazw dostawcy zasobów i typu zasobu (na przykład Microsoft.Storage/storageAccounts ). Aby określić dostępne wartości, zobacz dokumentację szablonu. W przypadku zasobu podrzędnego format typu zależy od tego, czy jest on zagnieżdżony w zasobie nadrzędnym, czy zdefiniowany poza zasobem nadrzędnym. Zobacz Ustawianie nazwy i typu dla zasobów podrzędnych. |
apiVersion | Tak | Wersja interfejsu API REST do użycia do tworzenia zasobu. Podczas tworzenia nowego szablonu ustaw tę wartość na najnowszą wersję wdrażanego zasobu. O ile szablon działa zgodnie z potrzebami, nadal używasz tej samej wersji interfejsu API. Kontynuując korzystanie z tej samej wersji interfejsu API, można zminimalizować ryzyko zmiany sposobu działania szablonu przez nową wersję interfejsu API. Rozważ zaktualizowanie wersji interfejsu API tylko wtedy, gdy chcesz użyć nowej funkcji wprowadzonej w nowszej wersji. Aby określić dostępne wartości, zobacz dokumentację szablonu. |
name | Tak | Nazwa zasobu. Nazwa musi być zgodna z ograniczeniami składników identyfikatora URI zdefiniowanymi w dokumencie RFC3986. Usługi platformy Azure, które uwidaczniają nazwę zasobu innym stronom, weryfikują nazwę, aby upewnić się, że nie jest to próba fałszowania innej tożsamości. W przypadku zasobu podrzędnego format nazwy zależy od tego, czy jest zagnieżdżona w zasobie nadrzędnym, czy zdefiniowana poza zasobem nadrzędnym. Zobacz Ustawianie nazwy i typu dla zasobów podrzędnych. |
komentarze | Nie | Uwagi dotyczące dokumentowania zasobów w szablonie. Aby uzyskać więcej informacji, zobacz Komentarze w szablonach. |
location | Różnie | Obsługiwane lokalizacje geograficzne dostarczonego zasobu. Możesz wybrać dowolną z dostępnych lokalizacji, ale zazwyczaj warto wybrać jedną, która znajduje się blisko użytkowników. Zwykle warto również umieścić zasoby, które współdziałają ze sobą w tym samym regionie. Większość typów zasobów wymaga lokalizacji, ale niektóre typy (takie jak przypisanie roli) nie wymagają lokalizacji. Zobacz Ustawianie lokalizacji zasobu. |
dependsOn | Nie | Zasoby, które należy wdrożyć przed wdrożeniem tego zasobu. Resource Manager ocenia zależności między zasobami i wdraża je w odpowiedniej kolejności. Gdy zasoby nie są od siebie zależne, są wdrażane równolegle. Wartość może być rozdzielaną przecinkami listą nazw zasobów lub unikatowych identyfikatorów zasobów. Wyświetl listę tylko zasobów wdrożonych w tym szablonie. Zasoby, które nie są zdefiniowane w tym szablonie, muszą już istnieć. Unikaj dodawania niepotrzebnych zależności, ponieważ mogą spowalniać wdrażanie i tworzyć zależności cykliczne. Aby uzyskać wskazówki dotyczące ustawiania zależności, zobacz Definiowanie kolejności wdrażania zasobów w szablonach usługi ARM. |
tags | Nie | Tagi skojarzone z zasobem. Stosowanie tagów w celu logicznego organizowania zasobów w ramach subskrypcji. |
identity | Nie | Niektóre zasoby obsługują tożsamości zarządzane dla zasobów platformy Azure. Te zasoby mają obiekt tożsamości na poziomie głównym deklaracji zasobu. Można ustawić, czy tożsamość jest przypisana przez użytkownika, czy przypisana przez system. W przypadku tożsamości przypisanych przez użytkownika podaj listę identyfikatorów zasobów dla tożsamości. Ustaw klucz na identyfikator zasobu i wartość na pusty obiekt. Aby uzyskać więcej informacji, zobacz Konfigurowanie tożsamości zarządzanych dla zasobów platformy Azure na maszynie wirtualnej platformy Azure przy użyciu szablonów. |
sku | Nie | Niektóre zasoby zezwalają na wartości definiujące jednostkę SKU do wdrożenia. Można na przykład określić typ nadmiarowości dla konta magazynu. |
Rodzaju | Nie | Niektóre zasoby umożliwiają określenie typu wdrażanego zasobu. Można na przykład określić typ wystąpienia usługi Azure Cosmos DB do utworzenia. |
scope | Nie | Właściwość zakresu jest dostępna tylko dla typów zasobów rozszerzeń. Użyj go podczas określania zakresu, który jest inny niż zakres wdrożenia. Zobacz Ustawianie zakresu dla zasobów rozszerzeń w szablonach usługi ARM. |
kopiowanie | Nie | Jeśli potrzebne jest więcej niż jedno wystąpienie, liczba zasobów do utworzenia. Tryb domyślny jest równoległy. Określ tryb seryjny, jeśli nie chcesz, aby wszystkie zasoby zostały wdrożone w tym samym czasie. Aby uzyskać więcej informacji, zobacz Tworzenie kilku wystąpień zasobów w usłudze Azure Resource Manager. |
plan | Nie | Niektóre zasoby zezwalają na wartości definiujące plan wdrożenia. Można na przykład określić obraz witryny Marketplace dla maszyny wirtualnej. |
properties | Nie | Ustawienia konfiguracji specyficzne dla zasobu. Wartości właściwości są takie same jak wartości podane w treści żądania dla operacji interfejsu API REST (metoda PUT), aby utworzyć zasób. Można również określić tablicę kopiowania, aby utworzyć kilka wystąpień właściwości. Aby określić dostępne wartości, zobacz dokumentację szablonu. |
zasoby | Nie | Zasoby podrzędne, które zależą od zdefiniowanego zasobu. Podaj tylko typy zasobów, które są dozwolone przez schemat zasobu nadrzędnego. Zależność od zasobu nadrzędnego nie jest dorozumiana. Należy jawnie zdefiniować zależność. Zobacz Ustawianie nazwy i typu dla zasobów podrzędnych. |
W aplikacji Bicep zobacz zasoby.
Dane wyjściowe
outputs
W sekcji określasz wartości zwracane z wdrożenia. Zazwyczaj zwracane są wartości z wdrożonych zasobów. W szablonie są ograniczone do 64 danych wyjściowych .
Poniższy przykład przedstawia strukturę definicji danych wyjściowych:
"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>
}
}
}
Nazwa elementu | Wymagane | Opis |
---|---|---|
output-name | Tak | Nazwa wartości wyjściowej. Musi być prawidłowym identyfikatorem języka JavaScript. |
Warunek | Nie | Wartość logiczna wskazująca, czy ta wartość wyjściowa jest zwracana. Gdy true wartość zostanie uwzględniona w danych wyjściowych wdrożenia. Gdy false wartość wyjściowa zostanie pominięta dla tego wdrożenia. Jeśli nie zostanie określony, wartość domyślna to true . |
typ | Tak | Typ wartości wyjściowej. Wartości wyjściowe obsługują te same typy co parametry wejściowe szablonu. Jeśli określisz ciąg securestring dla typu danych wyjściowych, wartość nie będzie wyświetlana w historii wdrożenia i nie można jej pobrać z innego szablonu. Aby użyć wartości wpisu tajnego w więcej niż jednym szablonie, zapisz wpis tajny w Key Vault i odwołaj się do wpisu tajnego w pliku parametrów. Aby uzyskać więcej informacji, zobacz Use Azure Key Vault to pass secure parameter value during deployment (Używanie usługi Azure Key Vault do przekazywania bezpiecznej wartości parametru podczas wdrażania). |
wartość | Nie | Wyrażenie języka szablonu, które jest oceniane i zwracane jako wartość wyjściowa. Określ wartość lub kopię. |
kopiowanie | Nie | Służy do zwracania więcej niż jednej wartości dla danych wyjściowych. Określ wartość lub kopię. Aby uzyskać więcej informacji, zobacz Iteracja danych wyjściowych w szablonach usługi ARM. |
Przykłady użycia danych wyjściowych można znaleźć w temacie Outputs in ARM template (Dane wyjściowe w szablonie usługi ARM).
W aplikacji Bicep zobacz dane wyjściowe.
Komentarze i metadane
Istnieje kilka opcji dodawania komentarzy i metadanych do szablonu.
Komentarze
W przypadku komentarzy wbudowanych można użyć polecenia //
lub /* ... */
. W Visual Studio Code zapisz pliki parametrów z komentarzami jako typ pliku JSON z komentarzami (JSONC), w przeciwnym razie zostanie wyświetlony komunikat o błędzie z informacją "Komentarze nie są dozwolone w formacie JSON".
Uwaga
W przypadku wdrażania szablonów z komentarzami przy użyciu interfejsu wiersza polecenia platformy Azure użyj wersji 2.3.0 lub nowszej --handle-extended-json-format
i określ przełącznik.
{
"type": "Microsoft.Compute/virtualMachines",
"apiVersion": "2018-10-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'))]"
],
W Visual Studio Code rozszerzenie Azure Resource Manager Tools może automatycznie wykrywać szablon usługi ARM i zmieniać tryb języka. Jeśli w prawym dolnym rogu Visual Studio Code zostanie wyświetlony szablon usługi Azure Resource Manager, możesz użyć komentarzy wbudowanych. Komentarze wbudowane nie są już oznaczone jako nieprawidłowe.
W aplikacji Bicep zobacz komentarze.
Metadane
Obiekt można dodać metadata
niemal w dowolnym miejscu w szablonie. Resource Manager ignoruje obiekt, ale edytor JSON może wyświetlić ostrzeżenie, że właściwość jest nieprawidłowa. W obiekcie zdefiniuj potrzebne właściwości.
{
"$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"
},
W przypadku parameters
elementu dodaj metadata
obiekt z właściwością description
.
"parameters": {
"adminUsername": {
"type": "string",
"metadata": {
"description": "User name for the Virtual Machine."
}
},
Podczas wdrażania szablonu za pośrednictwem portalu tekst w opisie jest automatycznie używany jako porada dla tego parametru.
W przypadku resources
elementu dodaj comments
element lub metadata
obiekt. W poniższym przykładzie pokazano zarówno element, jak comments
metadata
i obiekt.
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2018-07-01",
"name": "[concat('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": {}
}
]
W przypadku outputs
elementu dodaj metadata
obiekt do wartości wyjściowej.
"outputs": {
"hostname": {
"type": "string",
"value": "[reference(variables('publicIPAddressName')).dnsSettings.fqdn]",
"metadata": {
"comments": "Return the fully qualified domain name"
}
},
Nie można dodać metadata
obiektu do funkcji zdefiniowanych przez użytkownika.
Ciągi wielowierszowe
Ciąg można podzielić na wiele wierszy. Na przykład zobacz location
właściwość i jeden z komentarzy w poniższym przykładzie JSON.
Uwaga
Aby wdrożyć szablony z ciągami wielowierszowymi, użyj Azure PowerShell lub interfejsu wiersza polecenia platformy Azure. W przypadku interfejsu wiersza polecenia użyj wersji 2.3.0 lub nowszej --handle-extended-json-format
i określ przełącznik.
Ciągi wielowierszowe nie są obsługiwane podczas wdrażania szablonu za pośrednictwem Azure Portal, potoku DevOps lub interfejsu API REST.
{
"type": "Microsoft.Compute/virtualMachines",
"apiVersion": "2018-10-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'))]"
],
W pliku Bicep zobacz ciągi wielowierszowe.
Następne kroki
- Aby wyświetlić pełną listę szablonów dla wielu różnych rozwiązań, zobacz Szablony szybkiego startu platformy Azure.
- Aby uzyskać szczegółowe informacje o funkcjach, których można używać z poziomu szablonu, zobacz Funkcje szablonu usługi ARM.
- Aby połączyć kilka szablonów podczas wdrażania, zobacz Używanie połączonych i zagnieżdżonych szablonów podczas wdrażania zasobów platformy Azure.
- Aby uzyskać zalecenia dotyczące tworzenia szablonów, zobacz Najlepsze rozwiązania dotyczące szablonów usługi ARM.
- Odpowiedzi na często zadawane pytania można znaleźć w temacie Często zadawane pytania dotyczące szablonów usługi ARM.