Udostępnij za pośrednictwem


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 truepodczas wdrażania zostanie utworzony zasób. Gdy falsezasó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 truewartość zostanie uwzględniona w danych wyjściowych wdrożenia. Gdy falsewartość 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.

Zrzut ekranu programu Visual Studio Code w trybie szablonu usługi Azure Resource Manager.

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 parameterselementu 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.

Zrzut ekranu przedstawiający poradę parametru w witrynie Azure Portal.

W przypadku resourcespolecenia 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 outputselementu 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 to inner. 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:

Następne kroki