ARM şablonlarının yapısını ve söz dizimini anlama

Bu makalede Azure Resource Manager şablonunun (ARM şablonu) yapısı açıklanır. Bir şablonun farklı bölümlerini ve bu bölümlerde kullanılabilen özellikleri sunar.

Bu makale ARM şablonları hakkında bilgi sahibi olan kullanıcılara yöneliktir. Şablonun yapısı hakkında ayrıntılı bilgi sağlar. Şablon oluşturma işleminde size yol gösteren adım adım öğretici için bkz . Öğretici: İlk ARM şablonunuzu oluşturma ve dağıtma. Destekli Learn modülleri aracılığıyla ARM şablonları hakkında bilgi edinmek için bkz. ARM şablonlarını kullanarak Azure'da kaynakları dağıtma ve yönetme.

İpucu

Bicep, ARM şablonlarıyla aynı özellikleri sunan ancak kullanımı daha kolay olan bir söz dizimine sahip yeni bir dildir. Altyapıyı kod seçenekleri olarak düşünüyorsanız Bicep'e bakmanızı öneririz.

Bicep dosyasının öğeleri hakkında bilgi edinmek için bkz. Bicep dosyalarının yapısını ve söz dizimini anlama.

Şablon biçimi

En basit yapısında, bir şablon aşağıdaki öğelere sahiptir:

{
  "$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": { }
}
Öğe adı Gerekli Açıklama
$schema Yes Şablon dilinin sürümünü açıklayan JavaScript Nesne Gösterimi (JSON) şema dosyasının konumu. Kullandığınız sürüm numarası, dağıtımın kapsamına ve JSON düzenleyicinize bağlıdır.

Azure Resource Manager araçları uzantısıyla Visual Studio Code kullanıyorsanız kaynak grubu dağıtımları için en son sürümü kullanın:
https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#

Diğer düzenleyiciler (Visual Studio dahil) bu şemayı işleyemeyebilir. Bu düzenleyiciler için şunları kullanın:
https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#

Abonelik dağıtımları için şunu kullanın:
https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#

Yönetim grubu dağıtımları için şunu kullanın:
https://schema.management.azure.com/schemas/2019-08-01/managementGroupDeploymentTemplate.json#

Kiracı dağıtımları için şunu kullanın:
https://schema.management.azure.com/schemas/2019-08-01/tenantDeploymentTemplate.json#
languageVersion No Şablonun dil sürümü. languageVersion 2.0'ın geliştirmelerini görüntülemek için bkz. languageVersion 2.0.
contentVersion Yes Şablonun sürümü (1.0.0.0 gibi). Bu öğe için herhangi bir değer sağlayabilirsiniz. Şablonunuzdaki önemli değişiklikleri belge etmek için bu değeri kullanın. Şablonu kullanarak kaynakları dağıtırken, doğru şablonun kullanıldığından emin olmak için bu değer kullanılabilir.
apiProfile No Kaynak türleri için API sürümleri koleksiyonu olarak hizmet veren bir API sürümü. Şablondaki her kaynak için API sürümlerini belirtmek zorunda kalmamak için bu değeri kullanın. BIR API profili sürümü belirttiğinizde ve kaynak türü için bir API sürümü belirtmediğinizde Resource Manager profilde tanımlanan kaynak türü için API sürümünü kullanır.

API profili özelliği özellikle Azure Stack ve genel Azure gibi farklı ortamlara şablon dağıtırken yararlıdır. Şablonunuzun her iki ortamda da desteklenen sürümleri otomatik olarak kullandığından emin olmak için API profili sürümünü kullanın. Geçerli API profili sürümlerinin ve profilde tanımlanan kaynakların API sürümlerinin listesi için bkz. API Profili.

Daha fazla bilgi için bkz. API profillerini kullanarak sürümleri izleme.
Tanım No Dizi ve nesne değerlerini doğrulamak için kullanılan şemalar. Tanımlar yalnızca languageVersion 2.0'da desteklenir.
parametreler No Kaynak dağıtımlarını özelleştirmek için dağıtım yürütürken sağlanan değerler.
Değişken No Şablon dil ifadelerini basitleştirmek için şablonda JSON parçaları olarak kullanılan değerler.
Işlev No Şablon içinde kullanılabilen kullanıcı tanımlı işlevler.
Kaynak Yes Bir kaynak grubunda veya abonelikte dağıtılan veya güncelleştirilen kaynak türleri.
Çıkış No Dağıtımdan sonra döndürülen değerler.

Her öğenin ayarlayabileceğiniz özellikleri vardır. Bu makalede, şablonun bölümleri daha ayrıntılı olarak açıklanmaktadır.

Tanımlar

Şablonun definitions bölümünde, dizi ve nesne değerlerini doğrulamak için kullanılan şemaları belirtin. Definitions yalnızca languageVersion 2.0 ile kullanılabilir.

"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>"
    }
  }
}
Öğe adı Gerekli Açıklama
tanım-adı Yes Tür tanımının adı. Geçerli bir JavaScript tanımlayıcısı olmalıdır.
tür Yes Tür tanımının türü. İzin verilen türler ve değerler dize, securestring, int, bool, object, secureObject ve dizidir. Bkz. ARM şablonlarındaki veri türleri.
Allowedvalues No Doğru değerin sağlandığından emin olmak için tür tanımı için izin verilen değerler dizisi.
Minvalue No Int türü tanımları için en düşük değerdir; bu değer dahil edilir.
Maxvalue No Int türü tanımları için en büyük değerdir; bu değer kapsayıcıdır.
Minlength No Dize, güvenli dize ve dizi türü tanımları için minimum uzunluk, bu değer dahil.
Maxlength No Dize, güvenli dize ve dizi türü tanımları için uzunluk üst sınırıdır; bu değer kapsayıcıdır.
prefixItems No Aynı dizindeki bir dizinin öğesini doğrulama şeması.
öğe No Dizini kısıtlamanın en büyük dizininden büyük olan dizinin tüm öğelerine uygulanan şema veya dizini kısıtlamanın en büyük prefixItems dizininden prefixItems büyük olan dizinin öğelerini denetlemek için boole değeri.
properties No Nesneyi doğrulama şeması.
additionalProperties No Kısıtlamada belirtilmeyen tüm özelliklere uygulanan şema veya kısıtlamada properties tanımlanmamış properties herhangi bir özelliği kabul etmek için boole değeri.
Discriminator No Ayrımcı özelliğine göre uygulanacak şema.
nullable No Değerin null veya atlanmış olabileceğini gösteren bir boole değeri.
açıklama No Portal aracılığıyla kullanıcılara görüntülenen tür tanımının açıklaması. Daha fazla bilgi için bkz. Şablonlardaki açıklamalar.

Tür tanımlarının nasıl kullanılacağına ilişkin örnekler için bkz. ARM şablonlarındaki tür tanımları.

Bicep'te bkz . Kullanıcı tanımlı veri türleri.

Parametreler

Şablonun parameters bölümünde, kaynakları dağıtırken hangi değerleri girebileceğinizi belirtirsiniz. Şablonda 256 parametreyle sınırlısınız. Birden çok özellik içeren nesneleri kullanarak parametre sayısını azaltabilirsiniz.

Bir parametre için kullanılabilir özellikler şunlardır:

"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>"
    }
  }
}
Öğe adı Gerekli Açıklama
parametre-adı Yes Parametrenin adı. Geçerli bir JavaScript tanımlayıcısı olmalıdır.
tür Yes Parametre değerinin türü. İzin verilen türler ve değerler dize, securestring, int, bool, object, secureObject ve dizidir. Bkz. ARM şablonlarındaki veri türleri.
defaultValue No Parametre için değer sağlanmazsa parametresi için varsayılan değer.
Allowedvalues No Doğru değerin sağlandığından emin olmak için parametresi için izin verilen değerler dizisi.
Minvalue No Int türü parametreleri için en düşük değerdir; bu değer dahil edilir.
Maxvalue No Int türü parametreleri için en yüksek değerdir; bu değer dahil edilir.
Minlength No Dize, güvenli dize ve dizi türü parametreleri için minimum uzunluk, bu değer dahil.
Maxlength No Dize, güvenli dize ve dizi türü parametreleri için uzunluk üst sınırı; bu değer kapsayıcıdır.
prefixItems No Aynı dizindeki bir dizinin öğesini doğrulamak için tür tanımı. prefixItems yalnızca languageVersion 2.0'da desteklenir.
öğe No Dizini kısıtlamanın en büyük dizininden büyük olan dizinin tüm öğelerine uygulanan şema veya dizini kısıtlamanın en büyük prefixItems dizininden prefixItems büyük olan dizinin öğelerini denetlemek için boole değeri. items yalnızca languageVersion 2.0'da desteklenir.
properties No Nesneyi doğrulama şeması. properties yalnızca languageVersion 2.0'da desteklenir.
additionalProperties No Kısıtlamada belirtilmeyen tüm özelliklere uygulanan şema veya kısıtlamada properties tanımlanmamış properties herhangi bir özelliği kabul etmek için boole değeri. additionalProperties yalnızca languageVersion 2.0'da desteklenir.
Discriminator No Ayrımcı özelliğine göre uygulanacak şema. discriminator yalnızca languageVersion 2.0'da desteklenir.
nullable No Değerin null veya atlanmış olabileceğini gösteren bir boole değeri. nullable yalnızca languageVersion 2.0'da desteklenir.
açıklama No Portal aracılığıyla kullanıcılara görüntülenen parametrenin açıklaması. Daha fazla bilgi için bkz. Şablonlardaki açıklamalar.

Parametrelerin nasıl kullanılacağına ilişkin örnekler için bkz. ARM şablonlarındaki parametreler.

Bicep'te bkz. parametreler.

Değişkenler

variables bölümünde, şablonunuzun tamamında kullanılabilecek değerler oluşturursunuz. Değişkenleri tanımlamanız gerekmez, ancak bunlar genellikle karmaşık ifadeleri azaltarak şablonunuzu basitleştirir. Her değişkenin biçimi veri türlerinden biriyle eşleşir. Şablonda 256 değişkenle sınırlısınız.

Aşağıdaki örnekte değişken tanımlamaya yönelik kullanılabilir seçenekler gösterilmektedir:

"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>
    }
  ]
}

Bir değişken için birkaç değer oluşturma hakkında copy bilgi için bkz . Değişken yinelemesi.

Değişkenleri kullanma örnekleri için bkz. ARM şablonundaki değişkenler.

Bicep'te değişkenlere bakın.

İşlevler

Şablonunuzun içinde kendi işlevlerinizi oluşturabilirsiniz. Bu işlevler şablonunuzda kullanılabilir. Genellikle, şablonunuzun tamamında yinelemek istemediğiniz karmaşık ifadeler tanımlarsınız. Şablonlarda desteklenen ifadelerden ve işlevlerden kullanıcı tanımlı işlevleri oluşturursunuz.

Kullanıcı işlevi tanımlarken bazı kısıtlamalar vardır:

  • İşlev değişkenlere erişemiyor.
  • İşlev yalnızca işlevde tanımlanan parametreleri kullanabilir. Kullanıcı tanımlı bir işlev içinde parameters işlevini kullandığınızda, bu işlevin parametreleriyle sınırlısınız demektir.
  • İşlev, kullanıcı tanımlı diğer işlevleri çağıramaz.
  • İşlev başvuru işlevini kullanamaz.
  • İşlev parametrelerinin varsayılan değerleri olamaz.
"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>"
        }
      }
    }
  }
],
Öğe adı Gerekli Açıklama
ad alanı Yes Özel işlevler için ad alanı. Şablon işlevleriyle adlandırma çakışmalarını önlemek için kullanın.
işlev-adı Yes Özel işlevin adı. İşlevi çağırırken işlev adını ad alanıyla birleştirin. Örneğin, contoso ad alanında adlı uniqueName bir işlevi çağırmak için kullanın "[contoso.uniqueName()]".
parametre-adı No Özel işlev içinde kullanılacak parametrenin adı.
parametre-değeri No Parametre değerinin türü. İzin verilen türler ve değerler dize, securestring, int, bool, object, secureObject ve dizidir.
çıkış türü Yes Çıkış değerinin türü. Çıkış değerleri, işlev giriş parametreleriyle aynı türleri destekler.
output-value Yes İşlevden değerlendirilen ve döndürülen şablon dili ifadesi.

Özel işlevlerin nasıl kullanılacağına ilişkin örnekler için bkz. ARM şablonunda kullanıcı tanımlı işlevler.

Bicep'te kullanıcı tanımlı işlevler desteklenmez. Bicep çeşitli işlevleri ve işleçleri destekler.

Kaynaklar

resources bölümünde dağıtılan veya güncelleştirilen kaynakları tanımlarsınız. Şablonda 800 kaynakla sınırlısınız.

Kaynakları aşağıdaki yapıyla tanımlarsınız:

"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>"
    ]
  }
]
Öğe adı Gerekli Açıklama
Durum No Kaynağın bu dağıtım sırasında sağlanıp sağlanmadığını gösteren Boole değeri. olduğunda true, kaynak dağıtım sırasında oluşturulur. olduğunda false, bu dağıtım için kaynak atlanır. Koşula bakın.
tür Yes Kaynağın türü. Bu değer, kaynak sağlayıcısının ad alanı ile kaynak türünün (örneğin Microsoft.Storage/storageAccounts) birleşimidir. Kullanılabilir değerleri belirlemek için bkz. şablon başvurusu. Bir alt kaynak için türün biçimi, üst kaynak içinde iç içe mi yoksa üst kaynağın dışında mı tanımlandığına bağlıdır. Bkz. Alt kaynaklar için ad ve tür ayarlama.
apiVersion Yes Kaynağı oluşturmak için kullanılacak REST API sürümü. Yeni bir şablon oluştururken bu değeri dağıttığınız kaynağın en son sürümüne ayarlayın. Şablon gerektiği gibi çalıştığı sürece aynı API sürümünü kullanmaya devam edin. Aynı API sürümünü kullanmaya devam ederek, yeni bir API sürümünün şablonunuzun çalışma şeklini değiştirme riskini en aza indirirsiniz. API sürümünü yalnızca daha sonraki bir sürümde kullanıma sunulan yeni bir özelliği kullanmak istediğinizde güncelleştirebilirsiniz. Kullanılabilir değerleri belirlemek için bkz. şablon başvurusu.
name Yes Kaynağın adı. Adın RFC3986 tanımlanan URI bileşeni kısıtlamalarına uyması gerekir. Kaynak adını dış taraflara sunan Azure hizmetleri, başka bir kimlik sahtekarlığına yönelik bir girişim olmadığından emin olmak için adı doğrular. Bir alt kaynak için adın biçimi, üst kaynak içinde iç içe mi yoksa üst kaynak dışında mı tanımlandığına bağlıdır. Bkz. Alt kaynaklar için ad ve tür ayarlama.
yorumlar No Şablonunuzdaki kaynakları belgeleme notlarınız. Daha fazla bilgi için bkz. Şablonlardaki açıklamalar.
location Değişir Sağlanan kaynağın desteklenen coğrafi konumları. Kullanılabilir konumlardan herhangi birini seçebilirsiniz, ancak genellikle kullanıcılarınıza yakın bir konum seçmek mantıklıdır. Genellikle, birbiriyle etkileşim kuran kaynakları aynı bölgeye yerleştirmek de mantıklıdır. Çoğu kaynak türü bir konum gerektirir, ancak bazı türler (rol ataması gibi) bir konum gerektirmez. Bkz. Kaynak konumunu ayarlama.
dependsOn No Bu kaynak dağıtılmadan önce dağıtılması gereken kaynaklar. Resource Manager kaynaklar arasındaki bağımlılıkları değerlendirir ve doğru sırada dağıtır. Kaynaklar birbirine bağımlı olmadığında paralel olarak dağıtılır. Değer, kaynak adlarının veya kaynak benzersiz tanımlayıcılarının virgülle ayrılmış listesi olabilir. Yalnızca bu şablonda dağıtılan kaynakları listeleyin. Bu şablonda tanımlanmayan kaynakların zaten mevcut olması gerekir. Dağıtımınızı yavaşlatabilecek ve döngüsel bağımlılıklar oluşturabilecekleri için gereksiz bağımlılıklar eklemekten kaçının. Bağımlılıkları ayarlama yönergeleri için bkz. ARM şablonlarında kaynakları dağıtma sırasını tanımlama.
etiketler No Kaynakla ilişkili etiketler. Aboneliğiniz genelinde kaynakları mantıksal olarak düzenlemek için etiketler uygulayın.
identity No Bazı kaynaklar Azure kaynakları için yönetilen kimlikleri destekler. Bu kaynaklar, kaynak bildiriminin kök düzeyinde bir kimlik nesnesine sahiptir. Kimliğin kullanıcı tarafından mı yoksa sistem tarafından mı atandığını ayarlayabilirsiniz. Kullanıcı tarafından atanan kimlikler için kimliklerin kaynak kimliklerinin listesini sağlayın. Anahtarı kaynak kimliğine, değeri ise boş bir nesneye ayarlayın. Daha fazla bilgi için bkz . Şablonları kullanarak Azure VM'sinde Azure kaynakları için yönetilen kimlikleri yapılandırma.
Sku No Bazı kaynaklar dağıtılacak SKU'yu tanımlayan değerlere izin verir. Örneğin, depolama hesabı için yedeklilik türünü belirtebilirsiniz.
Tür No Bazı kaynaklar, dağıttığınız kaynak türünü tanımlayan bir değere izin verir. Örneğin, oluşturulacak Azure Cosmos DB örneğinin türünü belirtebilirsiniz.
scope No Kapsam özelliği yalnızca uzantı kaynak türleri için kullanılabilir. Dağıtım kapsamından farklı bir kapsam belirtirken bunu kullanın. Bkz . ARM şablonlarında uzantı kaynakları için kapsamı ayarlama.
kopyalama No Birden fazla örnek gerekiyorsa, oluşturulacak kaynak sayısı. Varsayılan mod paraleldir. Tümünün veya kaynakların aynı anda dağıtılmasını istemediğinizde seri modu belirtin. Daha fazla bilgi için bkz. Azure Resource Manager'de çeşitli kaynak örnekleri oluşturma.
plan No Bazı kaynaklar, dağıtılacak planı tanımlayan değerlere izin verir. Örneğin, bir sanal makine için market görüntüsünü belirtebilirsiniz.
properties No Kaynağa özgü yapılandırma ayarları. Özelliklerin değerleri, kaynağı oluşturmak için REST API işlemi (PUT yöntemi) için istek gövdesinde sağladığınız değerlerle aynıdır. Bir özelliğin birkaç örneğini oluşturmak için bir kopyalama dizisi de belirtebilirsiniz. Kullanılabilir değerleri belirlemek için bkz. şablon başvurusu.
kaynaklar No Tanımlanan kaynağa bağlı alt kaynaklar. Yalnızca üst kaynağın şeması tarafından izin verilen kaynak türlerini sağlayın. Üst kaynağa bağımlılık örtülü değildir. Bu bağımlılığı açıkça tanımlamanız gerekir. Bkz. Alt kaynaklar için ad ve tür ayarlama.

ARM JSON şablonlarında Bicep sembolik adını desteklemek için, sürümüyle 2.0 veya daha yenisiyle ekleyin languageVersion ve bir dizideki kaynak tanımını bir nesne olarak değiştirin.

{
  "$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>": {
      ...
    }
  }
}

Daha fazla bilgi için bkz . Kaynaklar.

Bicep'te kaynaklara bakın.

Çıkışlar

outputs bölümünde, dağıtımdan döndürülen değerleri belirtirsiniz. Genellikle, dağıtılan kaynaklardan değerler döndürürsiniz. Şablonda 64 çıkışla sınırlısınız.

Aşağıdaki örnekte çıkış tanımının yapısı gösterilmektedir:

"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>
    }
  }
}
Öğe adı Gerekli Açıklama
output-name Yes Çıkış değerinin adı. Geçerli bir JavaScript tanımlayıcısı olmalıdır.
Durum No Bu çıkış değerinin döndürüldüğünü gösteren Boole değeri. olduğunda true, değeri dağıtımın çıkışına eklenir. olduğunda false, bu dağıtım için çıkış değeri atlanır. Belirtilmediğinde, varsayılan değer şeklindedir true.
tür Yes Çıkış değerinin türü. Çıkış değerleri, şablon giriş parametreleriyle aynı türleri destekler. Çıkış türü için securestring belirtirseniz, değer dağıtım geçmişinde görüntülenmez ve başka bir şablondan alınamaz. Birden fazla şablonda gizli dizi değeri kullanmak için, gizli diziyi bir Key Vault depolayın ve parametre dosyasında gizli diziye başvurun. Daha fazla bilgi için bkz. Dağıtım sırasında güvenli parametre değeri geçirmek için Azure Key Vault kullanma.
değer No Değerlendirilen ve çıkış değeri olarak döndürülen şablon dili ifadesi. Değer veya kopya belirtin.
kopyalama No Bir çıkış için birden fazla değer döndürmek için kullanılır. Değer veya kopya belirtin. Daha fazla bilgi için bkz . ARM şablonlarında çıkış yinelemesi.

Çıkışları kullanma örnekleri için bkz. ARM şablonundaki çıkışlar.

Bicep'te çıkışlara bakın.

Açıklamalar ve meta veriler

Şablonunuz için açıklama ve meta veri eklemek için birkaç seçeneğiniz vardır.

Yorumlar

Satır içi açıklamalar için veya /* ... */kullanabilirsiniz//. Visual Studio Code'da, açıklama içeren parametre dosyalarını açıklamalar (JSONC) dosya türüyle JSON olarak kaydedin, aksi takdirde "JSON'da açıklamalara izin verilmiyor" hata iletisini alırsınız.

Not

Açıklamaları olan şablonları dağıtmak için Azure CLI kullanırken 2.3.0 veya sonraki bir sürümü kullanın ve anahtarı belirtin --handle-extended-json-format .

{
  "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'))]"
  ],

Visual Studio Code'da Azure Resource Manager Araçları uzantısı arm şablonunu otomatik olarak algılayabilir ve dil modunu değiştirebilir. Visual Studio Code sağ alt köşesinde Azure Resource Manager Şablonu görüyorsanız satır içi açıklamaları kullanabilirsiniz. Satır içi açıklamalar artık geçersiz olarak işaretlenmez.

Azure Resource Manager şablon modundaki Visual Studio Code ekran görüntüsü.

Bicep'te yorumlara bakın.

Meta veri

Şablonunuzda neredeyse her yere nesne metadata ekleyebilirsiniz. Resource Manager nesneyi yoksayar, ancak JSON düzenleyiciniz özelliğin geçerli olmadığı konusunda sizi uyarabilir. nesnesinde, ihtiyacınız olan özellikleri tanımlayın.

{
  "$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"
  },

için parametersözelliğine sahip bir metadatadescription nesne ekleyin.

"parameters": {
  "adminUsername": {
    "type": "string",
    "metadata": {
      "description": "User name for the Virtual Machine."
    }
  },

Şablon portal aracılığıyla dağıtılırken, açıklamada sağladığınız metin otomatik olarak bu parametre için bir ipucu olarak kullanılır.

Azure portal parametre ipucunu gösteren ekran görüntüsü.

için resourcesbir comments öğe veya metadata nesne ekleyin. Aşağıdaki örnekte hem bir comments öğe hem de bir nesne gösterilmektedir metadata .

"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": {}
  }
]

için outputsçıkış değerine bir metadata nesne ekleyin.

"outputs": {
  "hostname": {
    "type": "string",
    "value": "[reference(variables('publicIPAddressName')).dnsSettings.fqdn]",
    "metadata": {
      "comments": "Return the fully qualified domain name"
    }
  },

Kullanıcı tanımlı işlevlere nesne metadata ekleyemezsiniz.

Çok satırlı dizeler

Bir dizeyi birden çok satıra bölebilirsiniz. Örneğin, özelliğine location ve aşağıdaki JSON örneğindeki açıklamalardan birine bakın.

Not

Şablonları çok satırlı dizelerle dağıtmak için Azure PowerShell veya Azure CLI kullanın. CLI için 2.3.0 veya sonraki bir sürümü kullanın ve anahtarı belirtin --handle-extended-json-format .

Şablonu Azure portal, DevOps işlem hattı veya REST API aracılığıyla dağıttığınızda çok satırlı dizeler desteklenmez.

{
  "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'))]"
  ],

Bicep'te çok satırlı dizelere bakın.

languageVersion 2.0

Not

Deneysel işlevler herhangi bir languageVersion zamanda değiştirilebildiği için üretim ortamlarında ile bitenlerin -experimental kullanılması önerilmez.

Not

Visual Studio Code için Azure Resource Manager Araçları uzantısının geçerli sürümü languageVersion 2.0'da yapılan iyileştirmeleri tanımıyor.

languageVersion 2.0'ı kullanmak için şablonunuza ekleyin "languageVersion": "2.0" :

{
  "$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>": {
      ...
    }
  }
}

languageVersion 2.0 ile birlikte gelen iyileştirmeler ve değişiklikler:

  • ARM JSON şablonunda sembolik ad kullanın. Daha fazla bilgi için bkz. Sembolik ad kullanma.
  • Kaynak kopyalama döngülerinde sembolik ad kullanın. Bkz . Sembolik ad kullanma.
  • Dizilerde dependsOn sembolik ad kullanın. Bkz . DependsOn ve Depend on resources in a loop.
  • İşlevde reference kaynak adı yerine sembolik ad kullanın. Başvuruya bakın.
  • Kaynak koleksiyonunun çalışma zamanı durumlarını temsil eden bir nesne dizisi döndüren references() işlevi. Başvurulara bakın.
  • Arm'nin bir kaynağı dağıtmak yerine okuması için mevcut kaynakları bildirmek için 'mevcut' kaynak özelliğini kullanın. Bkz. Mevcut kaynakları bildirme.
  • Kullanıcı tanımlı türler oluşturun. Bkz . Tür tanımı.
  • Parametrelerde ve çıkışlarda kullanılacak ek toplama türü doğrulama kısıtlamaları.
  • özelliği için expressionEvaluationOptions varsayılan değer şeklindedir inner. Değer outer engellenir. Bkz. İç içe şablonlardaki ifade değerlendirme kapsamı.
  • işlevi özelliklerin deployment sınırlı bir alt kümesini döndürür. Bkz. dağıtım.
  • Dağıtımlar kaynağı sembolik ad dağıtımında kullanılıyorsa apiVersion 2020-09-01 veya sonraki bir sürümü kullanın.
  • Kaynak tanımında, bir ifade içindeki çift kaçış değerleri artık gerekli değildir. Bkz . Kaçış karakterleri.

Sonraki adımlar