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 mają pewną znajomość szablonów 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 modułów platformy Learn, zobacz Wdrażanie zasobów na platformie Azure i zarządzanie nimi przy użyciu szablonów usługi ARM.
Napiwek
Bicep to nowy język, który oferuje takie same możliwości jak szablony usługi ARM, ale ze składnią, która jest łatwiejsza w użyciu. Jeśli rozważasz opcję infrastruktury jako kodu, zalecamy zapoznanie się z 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#",
"languageVersion": "",
"contentVersion": "",
"apiProfile": "",
"definitions": { },
"parameters": { },
"variables": { },
"functions": [ ],
"resources": [ ], /* or "resources": { } with languageVersion 2.0 */
"outputs": { }
}
Nazwa elementu | Wymagania | 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 programu Visual Studio Code z rozszerzeniem narzędzi usługi Azure Resource Manager, użyj najnowszej wersji dla wdrożeń grup zasobów: https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json# Inne edytory (w tym Program 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# |
languageVersion | Nie. | Wersja językowa szablonu. Aby wyświetlić ulepszenia wersji languageVersion 2.0, zobacz languageVersion 2.0. |
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 używany jest 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. Jeśli określisz wersję profilu interfejsu API i nie określisz wersji interfejsu API dla typu zasobu, usługa 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 usługa 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. |
Definicje | Nie. | Schematy używane do weryfikowania wartości tablicy i obiektów. Definicje są obsługiwane tylko w wersji languageVersion 2.0. |
parameters | Nie. | Wartości podane podczas wdrażania w celu dostosowania wdrożenia zasobów. |
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. |
zasoby | 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.
Definicje
definitions
W sekcji szablonu określ schematy używane do sprawdzania poprawności wartości tablicy i obiektu. Definitions
Można używać tylko z 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>"
}
}
}
Nazwa elementu | Wymagania | opis |
---|---|---|
definition-name | Tak | Nazwa definicji typu. Musi być prawidłowym identyfikatorem JavaScript. |
type | Tak | Typ definicji typu. Dozwolone typy i wartości to ciąg, securestring, int, bool, object, secureObject i array. Zobacz Typy danych w szablonach usługi ARM. |
allowedValues | Nie. | Tablica dozwolonych wartości definicji typu, aby upewnić się, że podano odpowiednią wartość. |
minValue | Nie. | Wartość minimalna definicji typu int jest włącznie. |
maxValue | Nie. | Maksymalna wartość definicji typu int jest inkluzywna. |
minLength | Nie. | Minimalna długość definicji ciągów, bezpiecznych ciągów i typów tablicy jest inkluzywna. |
maxLength | Nie. | Maksymalna długość ciągów, bezpiecznych ciągów i definicji typu tablicy jest włącznie. |
prefiksItems | Nie. | Schemat sprawdzania poprawności elementu tablicy w tym samym indeksie. |
elementy | Nie. | Schemat stosowany do wszystkich elementów tablicy, których indeks jest większy niż największy indeks prefixItems ograniczenia, lub wartość logiczna do kontrolowania elementów tablicy, których indeks jest większy niż największy indeks prefixItems ograniczenia. |
właściwości | Nie. | Schemat sprawdzania poprawności obiektu. |
additionalProperties | Nie. | Schemat stosowany do wszystkich właściwości, które nie zostały wymienione w ograniczeniu properties lub wartości logicznej do akceptowania żadnej właściwości niezdefiniowane w ograniczeniu properties . |
Rozróżniacza | Nie. | Schemat do zastosowania na podstawie właściwości dyskryminującej. |
nullable | Nie. | Wartość logiczna wskazująca, że wartość może być równa null lub pominięta. |
opis | Nie. | Opis definicji typu wyświetlanej użytkownikom za pośrednictwem portalu. Aby uzyskać więcej informacji, zobacz Komentarze w szablonach. |
Aby zapoznać się z przykładami używania definicji typów, zobacz Definicje typów w szablonach usługi ARM.
W Bicep zobacz Typy danych zdefiniowanych przez użytkownika.
Parametry
parameters
W sekcji szablonu określ wartości, które można wprowadzić podczas wdrażania zasobów. W szablonie jest ograniczonych do 256 parametrów . Liczbę parametrów można zmniejszyć, używając 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>,
"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>"
}
}
}
Nazwa elementu | Wymagania | opis |
---|---|---|
nazwa-parametru | Tak | Nazwa parametru. Musi być prawidłowym identyfikatorem JavaScript. |
type | 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 podano żadnej wartości. |
allowedValues | Nie. | Tablica dozwolonych wartości parametru, aby upewnić się, że podano odpowiednią wartość. |
minValue | Nie. | Wartość minimalna parametrów typu int jest włącznie. |
maxValue | Nie. | Maksymalna wartość parametrów typu int jest włącznie. |
minLength | Nie. | Minimalna długość parametrów ciągu, bezpiecznego ciągu i typu tablicy jest włącznie. |
maxLength | Nie. | Maksymalna długość parametrów ciągu, bezpiecznego ciągu i typu tablicy jest inkluzywna. |
prefiksItems | Nie. | Definicja typu do sprawdzania poprawności elementu tablicy w tym samym indeksie. prefixItems program jest obsługiwany tylko w wersji languageVersion 2.0. |
elementy | Nie. | Schemat stosowany do wszystkich elementów tablicy, których indeks jest większy niż największy indeks prefixItems ograniczenia, lub wartość logiczna do kontrolowania elementów tablicy, których indeks jest większy niż największy indeks prefixItems ograniczenia. items program jest obsługiwany tylko w wersji languageVersion 2.0. |
właściwości | Nie. | Schemat sprawdzania poprawności obiektu. properties program jest obsługiwany tylko w wersji languageVersion 2.0. |
additionalProperties | Nie. | Schemat stosowany do wszystkich właściwości, które nie zostały wymienione w ograniczeniu properties lub wartości logicznej do akceptowania żadnej właściwości niezdefiniowane w ograniczeniu properties . additionalProperties program jest obsługiwany tylko w wersji languageVersion 2.0. |
Rozróżniacza | Nie. | Schemat do zastosowania na podstawie właściwości dyskryminującej. discriminator program jest obsługiwany tylko w wersji languageVersion 2.0. |
nullable | Nie. | Wartość logiczna wskazująca, że wartość może być równa null lub pominięta. nullable program jest obsługiwany tylko w wersji languageVersion 2.0. |
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 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, zmniejszając złożone wyrażenia. Format każdej zmiennej jest zgodny z jednym z typów danych. W szablonie jest ograniczonych 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 tworzenia copy
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 Bicep zobacz zmienne.
Funkcje
W ramach szablonu możesz tworzyć własne funkcje. Te funkcje są dostępne do użycia w szablonie. Zazwyczaj definiuje się 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, ograniczasz się do parametrów 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 | Wymagania | opis |
---|---|---|
namespace | Tak | Przestrzeń nazw dla funkcji niestandardowych. Służy do unikania 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. |
Aby zapoznać się z przykładami używania funkcji niestandardowych, zobacz Funkcje zdefiniowane przez użytkownika w szablonie usługi ARM.
W środowisku Bicep funkcje zdefiniowane przez użytkownika nie są obsługiwane. Bicep obsługuje różne funkcje i operatory.
Zasoby
W sekcji zdefiniujesz resources
zasoby, które są wdrażane lub aktualizowane. W szablonie jest ograniczonych do 800 zasobów .
Zasoby są definiowane przy użyciu następującej struktury:
"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 | Wymagania | opis |
---|---|---|
condition | Nie. | Wartość logiczna wskazująca, czy zasób jest aprowizowany 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. |
type | 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. Jeśli szablon działa zgodnie z potrzebami, należy używać 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 RFC3986. Usługi platformy Azure, które uwidaczniają nazwę zasobu stronom zewnętrznym, 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 on zagnieżdżony w zasobie nadrzędnym, czy zdefiniowany 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. |
lokalizacja | Różne | Obsługiwane lokalizacje geograficzne dostarczonego zasobu. Możesz wybrać dowolną z dostępnych lokalizacji, ale zazwyczaj warto wybrać lokalizację znajdującą 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. Usługa Resource Manager ocenia zależności między zasobami i wdraża je w odpowiedniej kolejności. Gdy zasoby nie są zależne od siebie, są wdrażane równolegle. Wartość może być rozdzielona przecinkami lista 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. |
tożsamości | 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. |
kind | Nie. | Niektóre zasoby umożliwiają użycie wartości definiującej typ wdrażanego zasobu. Można na przykład określić typ wystąpienia usługi Azure Cosmos DB do utworzenia. |
zakres | 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 zasobów rozszerzeń w szablonach usługi ARM. |
kopiowanie | Nie. | Jeśli jest potrzebne 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. |
właściwości | Nie. | Ustawienia konfiguracji specyficzne dla zasobów. 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. |
Aby obsługiwać symboliczną nazwę Bicep w szablonach JSON usługi ARM, dodaj languageVersion
wersję 2.0
lub nowszą i zmień definicję zasobu z tablicy na obiekt.
{
"$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>": {
...
}
}
}
Aby uzyskać więcej informacji, zobacz Zasoby.
W aplikacji Bicep zobacz zasoby.
Dane wyjściowe
outputs
W sekcji określisz wartości zwracane z wdrożenia. Zazwyczaj zwracane są wartości z wdrożonych zasobów. W szablonie jest ograniczonych do 64 danych wyjściowych .
W poniższym przykładzie przedstawiono 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 | Wymagania | opis |
---|---|---|
output-name | Tak | Nazwa wartości wyjściowej. Musi być prawidłowym identyfikatorem JavaScript. |
condition | 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 . |
type | Tak | Typ wartości wyjściowej. Wartości wyjściowe obsługują te same typy co parametry wejściowe szablonu. Jeśli określisz bezpieczny ciąg dla typu danych wyjściowych, wartość nie jest wyświetlana w historii wdrażania 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 usłudze Key Vault i odwołaj się do wpisu tajnego w pliku parametrów. Aby uzyskać więcej informacji, zobacz 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 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ć funkcji //
lub /* ... */
. W programie 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": "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'))]"
],
W programie Visual Studio Code rozszerzenie Narzędzia usługi Azure Resource Manager może automatycznie wykrywać szablon usługi ARM i zmieniać tryb języka. Jeśli w prawym dolnym rogu programu 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 wszędzie w szablonie. Usługa Resource Manager ignoruje obiekt, ale edytor JSON może wyświetlić ostrzeżenie, że właściwość nie jest prawidł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
polecenia dodaj comments
element lub metadata
obiekt. W poniższym przykładzie przedstawiono zarówno element, comments
jak metadata
i obiekt.
"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": {}
}
]
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 programu 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 witryny Azure Portal, potoku DevOps lub interfejsu API REST.
{
"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'))]"
],
W Bicep zobacz ciągi wielowierszowe.
languageVersion 2.0
Uwaga
Użycie dowolnego languageVersion
elementu kończącego się -experimental
w środowisku produkcyjnym nie jest zalecane, ponieważ w dowolnym momencie można zmienić funkcje eksperymentalne.
Uwaga
Bieżąca wersja rozszerzenia Narzędzi usługi Azure Resource Manager dla programu Visual Studio Code nie rozpoznaje ulepszeń w wersji languageVersion 2.0.
Aby użyć wersji languageVersion 2.0, dodaj "languageVersion": "2.0"
go do szablonu:
{
"$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>": {
...
}
}
}
Ulepszenia i zmiany, które są dostarczane z languageVersion 2.0:
- Użyj nazwy symbolicznej w szablonie JSON usługi ARM. Aby uzyskać więcej informacji, zobacz Używanie nazwy symbolicznej.
- Użyj nazwy symbolicznej w pętlach kopiowania zasobów. Zobacz Używanie nazwy symbolicznej.
- Użyj nazwy symbolicznej w
dependsOn
tablicach. Zobacz DependsOn i Depend on resources in a loop (Zależności od zasobów w pętli). - Użyj nazwy symbolicznej zamiast nazwy zasobu w
reference
funkcji . Zobacz dokumentację. - Funkcja references(), która zwraca tablicę obiektów reprezentujących stany środowiska uruchomieniowego kolekcji zasobów. Zobacz odwołania.
- Użyj właściwości "existing" zasobu, aby zadeklarować istniejące zasoby dla usługi ARM, aby odczytać, a nie wdrożyć zasobu. Zobacz Deklarowanie istniejących zasobów.
- Tworzenie typów zdefiniowanych przez użytkownika. Zobacz Definicja typu.
- Dodatkowe ograniczenia weryfikacji typu agregacji, które mają być używane w parametrach i danych wyjściowych.
- Wartość domyślna
expressionEvaluationOptions
właściwości toinner
. Wartośćouter
jest zablokowana. Zobacz Zakres oceny wyrażeń w szablonach zagnieżdżonych. - Funkcja
deployment
zwraca ograniczony podzestaw właściwości. Zobacz wdrażanie. - Jeśli zasób Wdrożenia jest używany we wdrożeniu o nazwie symbolicznej, użyj elementu apiVersion
2020-09-01
lub nowszego. - W definicji zasobu wartości podwójne ucieczki w wyrażeniu nie są już potrzebne. Zobacz Znaki ucieczki.
Użycie dowolnych z następujących funkcji Bicep automatycznie włącza generowanie kodu w wersji 2.0 języka:
- typy zdefiniowane przez użytkownika
- funkcje zdefiniowane przez użytkownika
- Importy w czasie kompilacji
- funkcje eksperymentalne
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.