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. 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ı | 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ı. prefixItems yalnı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. items yalnızca languageVersion 2.0'da desteklenir. |
özellikler | Hayır | Nesne doğrulama şeması. properties yalnı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. additionalProperties yalnızca languageVersion 2.0'da desteklenir. |
Discriminator | Hayır | Ayrıştırıcı özelliğine göre uygulanacak şema. discriminator yalnızca languageVersion 2.0'da desteklenir. |
nullable | Hayır | Değerin null veya atlanmış olabileceğini gösteren boole değeri. nullable yalnı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.
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.
için resources
bir 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ğerdirinner
. Değerouter
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.
Aşağıdaki Bicep özelliklerinden herhangi birinin kullanılması, dil sürümü 2.0 kod oluşturmayı otomatik olarak etkinleştirir:
- kullanıcı tanımlı türler
- kullanıcı tanımlı işlevler
- derleme zamanı içeri aktarmaları
- deneysel özellikler
Sonraki adımlar
- Farklı türlerde çözümler için tam şablonları görüntülemek üzere bkz. Azure Hızlı Başlangıç Şablonları.
- Şablon içinden kullanabileceğiniz işlevler hakkında ayrıntılı bilgi için bkz . ARM şablonu işlevleri.
- Dağıtım sırasında birkaç şablonu birleştirmek için bkz . Azure kaynaklarını dağıtırken bağlantılı ve iç içe yerleştirilmiş şablonları kullanma.
- Şablon oluşturma hakkında öneriler için bkz . ARM şablonu en iyi yöntemleri.
- Sık sorulan soruların yanıtları için bkz . ARM şablonları hakkında sık sorulan sorular.