Aracılığıyla paylaş


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

Bu makalede Azure Resource Manager şablonunun (ARM şablonu) yapısı açıklanmaktadır. Ş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 bir öğretici için bkz . Öğretici: İlk ARM şablonunuzu oluşturma ve dağıtma. Kılavuzlu Learn modülleriyle 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 bir söz dizimine sahip yeni bir dildir. Kod seçenekleri olarak altyapıyı 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ı Zorunlu 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 şunu 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 Hayır Şablonun dil sürümü. languageVersion 2.0 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 Hayır Kaynak türleri için API sürümlerinin koleksiyonu olarak hizmet veren bir API sürümü. Şablondaki her kaynak için API sürümleri 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 kaynak API sürümlerinin listesi için bkz . API Profili.

Daha fazla bilgi için bkz . API profillerini kullanarak sürümleri izleme.
tanımlar Hayır Dizi ve nesne değerlerini doğrulamak için kullanılan şemalar. Tanımlar yalnızca languageVersion 2.0'da desteklenir.
parametreler Hayır Kaynak dağıtımlarını özelleştirmek için dağıtım yürütürken sağlanan değerler.
Değişken Hayır Şablon dili ifadelerini basitleştirmek için şablonda JSON parçaları olarak kullanılan değerler.
Işlev Hayır Şablonda kullanılabilen kullanıcı tanımlı işlevler.
Kaynaklar Yes Bir kaynak grubu veya abonelikte dağıtılan veya güncelleştirilen kaynak türleri.
Çıkış Hayır 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. Definitionsyalnı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ı Zorunlu 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 Hayır Doğru değerin sağlandığından emin olmak için tür tanımı için izin verilen değerler dizisi.
minValue Hayır Int türü tanımları için en düşük değer olan bu değer kapsayıcıdır.
maxValue Hayır Int türü tanımları için en yüksek değer olan bu değer dahil.
minLength Hayır Dize, güvenli dize ve dizi türü tanımları için en düşük uzunluk, bu değer dahil.
maxLength Hayır Dize, güvenli dize ve dizi türü tanımları için uzunluk üst sınırı; bu değer dahildir.
prefixItems Hayır Aynı dizindeki bir dizinin öğesini doğrulama şeması.
öğe Hayır 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.
özellikler Hayır Nesne doğrulama şeması.
additionalProperties Hayır Kısıtlamada belirtilmeyen tüm özelliklere uygulanan şema veya kısıtlamada properties tanımlanmayan properties herhangi bir özelliği kabul etmek için boole değeri.
Discriminator Hayır Ayrıştırıcı özelliğine göre uygulanacak şema.
nullable Hayır Değerin null veya atlanmış olabileceğini gösteren boole değeri.
açıklama Hayır 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ı Zorunlu 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 Hayır Parametre için değer sağlanmadıysa parametresi için varsayılan değer.
allowedValues Hayır Doğru değerin sağlandığından emin olmak için parametresi için izin verilen değerler dizisi.
minValue Hayır Int türü parametreleri için en düşük değer olan bu değer dahildir.
maxValue Hayır Int türü parametreleri için en yüksek değer olan bu değer dahil.
minLength Hayır Dize, güvenli dize ve dizi türü parametreleri için minimum uzunluk, bu değer dahil.
maxLength Hayır Dize, güvenli dize ve dizi türü parametreleri için uzunluk üst sınırı, bu değer dahil.
prefixItems Hayır Aynı dizindeki bir dizinin öğesini doğrulamaya yönelik tür tanımı. prefixItemsyalnızca languageVersion 2.0'da desteklenir.
öğe Hayır 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. itemsyalnızca languageVersion 2.0'da desteklenir.
özellikler Hayır Nesne doğrulama şeması. propertiesyalnızca languageVersion 2.0'da desteklenir.
additionalProperties Hayır Kısıtlamada belirtilmeyen tüm özelliklere uygulanan şema veya kısıtlamada properties tanımlanmayan properties herhangi bir özelliği kabul etmek için boole değeri. additionalPropertiesyalnızca languageVersion 2.0'da desteklenir.
Discriminator Hayır Ayrıştırıcı özelliğine göre uygulanacak şema. discriminatoryalnızca languageVersion 2.0'da desteklenir.
nullable Hayır Değerin null veya atlanmış olabileceğini gösteren boole değeri. nullableyalnızca languageVersion 2.0'da desteklenir.
açıklama Hayır 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 parametrelere bakın.

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 çeşitli değerler oluşturmak üzere kullanma copy hakkında bilgi için bkz . Değişken yinelemesi.

Değişkenlerin nasıl kullanılacağına ilişkin örnekler 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. Kullanıcı tanımlı işlevleri, şablonlarda desteklenen ifadelerden ve işlevlerden 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 parametreleri varsayılan değerlere sahip 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ı Zorunlu 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ı Hayır Özel işlev içinde kullanılacak parametrenin adı.
parametre-değer Hayır 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şlevleri kullanma örnekleri 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ıda 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ı Zorunlu Açıklama
koşul Hayır 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. Bkz . koşul.
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 kaynağın 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.
apiVersion Yes Kaynağı oluşturmak için kullanılacak REST API sürümü. Yeni ş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 API sürümünün şablonunuzun çalışma şeklini değiştirme riskini en aza indirirsiniz. API sürümünü yalnızca 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.
Adı Yes Kaynağın adı. Ad, RFC3986 tanımlanan URI bileşeni kısıtlamalarına uygun olmalıdır. 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 kaynağın 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 Hayır Şablonunuzdaki kaynakları belgeleme notlarınız. Daha fazla bilgi için bkz . Şablonlardaki açıklamalar.
konum 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çmeniz mantıklıdır. Genellikle, birbirleriyle 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 Hayır 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şlatabilecekleri 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.
tags Hayır Kaynakla ilişkili etiketler. Abonelik genelinde kaynakları mantıksal olarak düzenlemek için etiketler uygulayın.
identity Hayır 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 kimlikler için 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 Hayır 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 Hayır 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.
kapsam Hayır Kapsam özelliği yalnızca uzantı kaynak türleri için kullanılabilir. Dağıtım kapsamından farklı bir kapsam belirtirken kullanın. Bkz. ARM şablonlarında uzantı kaynaklarının kapsamını ayarlama.
kopyalama Hayır 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'da birkaç kaynak örneği oluşturma.
plan Hayır Bazı kaynaklar, dağıtılacak planı tanımlayan değerlere izin verir. Örneğin, sanal makine için market görüntüsünü belirtebilirsiniz.
özellikler Hayır Kaynağa özgü yapılandırma ayarları. Özelliklerin değerleri, rest API işleminin (PUT yöntemi) kaynağı oluşturması 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 Hayır 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ü 2.0 veya daha yenisini 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ı Zorunlu Açıklama
output-name Yes Çıkış değerinin adı. Geçerli bir JavaScript tanımlayıcısı olmalıdır.
koşul Hayır 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'ta 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 Hayır Değerlendirilen ve çıkış değeri olarak döndürülen şablon dili ifadesi. Değer veya kopyalama belirtin.
kopyalama Hayır Bir çıkış için birden fazla değer döndürmek için kullanılır. Değer veya kopyalama 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.

Açıklamalar

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

Azure CLI kullanarak şablonları açıklamalarla dağıtı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ı bir ARM şablonunu otomatik olarak algılayabilir ve dil modunu değiştirebilir. Visual Studio Code'un 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 modunda Visual Studio Code'un 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ği olan bir metadata description 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 ipucu olarak kullanılır.

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

için resourcesbir comments öğe veya metadata nesne ekleyin. Aşağıdaki örnekte hem öğe comments hem de 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 ekleyemezsiniz metadata .

Çok satırlı dizeler

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

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 bkz . çok satırlı dizeler.

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 geliş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 Bir döngüdeki kaynaklara bağımlı.
  • İş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. Bkz . başvurular.
  • Arm'nin bir kaynağı dağıtmak yerine okuması için mevcut kaynakları bildirmek için 'mevcut' kaynak özelliğini kullanın. Bkz. Var olan 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ğerdir inner. Değer outer engellenir. Bkz. İç içe şablonlardaki ifade değerlendirme kapsamı.
  • İşlev, deployment özelliklerin 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çinde iki kez kaçış değerleri artık gerekli değildir. Bkz . Kaçış karakterleri.

Sonraki adımlar