Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, Azure Resource Manager şablonunuzda (ARM şablonu) bir değişken için birden fazla değer oluşturma adımları gösterilmektedir. öğesini şablonunuzun değişkenler bölümüne ekleyerek copy , dağıtım sırasında bir değişkenin öğe sayısını dinamik olarak ayarlayabilirsiniz. Şablon söz dizimlerini yinelemekten de kaçınabilirsiniz.
Kopyalamayı kaynaklarla, kaynaktaki özelliklerle ve çıkışlarla da kullanabilirsiniz.
Tavsiye
ARM şablonlarıyla aynı özellikleri sunduğundan ve söz diziminin kullanımı daha kolay olduğundan Bicep'i öneririz. Daha fazla bilgi edinmek için bkz. döngüler.
Sözdizimi
copy öğesi aşağıdaki genel biçime sahiptir:
"copy": [
{
"name": "<name-of-loop>",
"count": <number-of-iterations>,
"input": <values-for-the-variable>
}
]
name özelliği, döngüsü tanımlayan herhangi bir değerdir. özelliği, count değişken için istediğiniz yineleme sayısını belirtir.
input özelliği, yinelemek istediğiniz özellikleri belirtir. özelliğindeki input değerden oluşan bir öğe dizisi oluşturursunuz. Tek bir özellik (dize gibi) veya çeşitli özelliklere sahip bir nesne olabilir.
Kopya sınırları
Sayı 800'ü aşamaz.
Sayı negatif bir sayı olamaz. Şablonu Azure CLI, PowerShell veya REST API'nin son sürümüyle dağıtırsanız sıfır olabilir. Özellikle şunları kullanmanız gerekir:
- Azure PowerShell 2.6 veya üzeri
- Azure CLI 2.0.74 veya üzeri
- REST API sürüm 2019-05-10 veya üzeri
- Bağlı dağıtımlar, dağıtım kaynak türü için API sürüm 2019-05-10 veya üzerini kullanmalıdır
PowerShell, CLI ve REST API'nin önceki sürümleri sayma için sıfırı desteklemez.
Değişken yinelemesi
Aşağıdaki örnekte, dize değerleri dizisinin nasıl oluşturulacağı gösterilmektedir:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"itemCount": {
"type": "int",
"defaultValue": 5
}
},
"variables": {
"copy": [
{
"name": "stringArray",
"count": "[parameters('itemCount')]",
"input": "[concat('item', copyIndex('stringArray', 1))]"
}
]
},
"resources": [],
"outputs": {
"arrayResult": {
"type": "array",
"value": "[variables('stringArray')]"
}
}
}
Yukarıdaki şablon aşağıdaki değerlere sahip bir dizi döndürür:
[
"item1",
"item2",
"item3",
"item4",
"item5"
]
Sonraki örnekte, , nameve diskSizeGBolmak üzere üç özelliğe diskIndexsahip bir nesne dizisinin nasıl oluşturulacağı gösterilmektedir.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"itemCount": {
"type": "int",
"defaultValue": 5
}
},
"variables": {
"copy": [
{
"name": "objectArray",
"count": "[parameters('itemCount')]",
"input": {
"name": "[concat('myDataDisk', copyIndex('objectArray', 1))]",
"diskSizeGB": "1",
"diskIndex": "[copyIndex('objectArray')]"
}
}
]
},
"resources": [],
"outputs": {
"arrayResult": {
"type": "array",
"value": "[variables('objectArray')]"
}
}
}
Yukarıdaki örnek aşağıdaki değerlere sahip bir dizi döndürür:
[
{
"name": "myDataDisk1",
"diskSizeGB": "1",
"diskIndex": 0
},
{
"name": "myDataDisk2",
"diskSizeGB": "1",
"diskIndex": 1
},
{
"name": "myDataDisk3",
"diskSizeGB": "1",
"diskIndex": 2
},
{
"name": "myDataDisk4",
"diskSizeGB": "1",
"diskIndex": 3
},
{
"name": "myDataDisk5",
"diskSizeGB": "1",
"diskIndex": 4
}
]
Uyarı
Değişken yinelemesi, uzaklık bağımsız değişkenlerini destekler. Kaydırma yinelemenin adından sonra gelmelidir, örneğin copyIndex('diskNames', 1). Bir uzaklık değeri sağlamazsanız, ilk örnek için varsayılan olarak 0 olur.
copy öğesini bir değişken içinde de kullanabilirsiniz. Aşağıdaki örnek, değerlerinden biri olarak diziye sahip bir nesne oluşturur.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"itemCount": {
"type": "int",
"defaultValue": 5
}
},
"variables": {
"topLevelObject": {
"sampleProperty": "sampleValue",
"copy": [
{
"name": "disks",
"count": "[parameters('itemCount')]",
"input": {
"name": "[concat('myDataDisk', copyIndex('disks', 1))]",
"diskSizeGB": "1",
"diskIndex": "[copyIndex('disks')]"
}
}
]
}
},
"resources": [],
"outputs": {
"objectResult": {
"type": "object",
"value": "[variables('topLevelObject')]"
}
}
}
Yukarıdaki örnek aşağıdaki değerlere sahip bir nesne döndürür:
{
"sampleProperty": "sampleValue",
"disks": [
{
"name": "myDataDisk1",
"diskSizeGB": "1",
"diskIndex": 0
},
{
"name": "myDataDisk2",
"diskSizeGB": "1",
"diskIndex": 1
},
{
"name": "myDataDisk3",
"diskSizeGB": "1",
"diskIndex": 2
},
{
"name": "myDataDisk4",
"diskSizeGB": "1",
"diskIndex": 3
},
{
"name": "myDataDisk5",
"diskSizeGB": "1",
"diskIndex": 4
}
]
}
Sonraki örnekte değişkenlerle kullanabileceğiniz copy farklı yollar gösterilmektedir.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {},
"variables": {
"disk-array-on-object": {
"copy": [
{
"name": "disks",
"count": 5,
"input": {
"name": "[concat('myDataDisk', copyIndex('disks', 1))]",
"diskSizeGB": "1",
"diskIndex": "[copyIndex('disks')]"
}
},
{
"name": "diskNames",
"count": 5,
"input": "[concat('myDataDisk', copyIndex('diskNames', 1))]"
}
]
},
"copy": [
{
"name": "top-level-object-array",
"count": 5,
"input": {
"name": "[concat('myDataDisk', copyIndex('top-level-object-array', 1))]",
"diskSizeGB": "1",
"diskIndex": "[copyIndex('top-level-object-array')]"
}
},
{
"name": "top-level-string-array",
"count": 5,
"input": "[concat('myDataDisk', copyIndex('top-level-string-array', 1))]"
},
{
"name": "top-level-integer-array",
"count": 5,
"input": "[copyIndex('top-level-integer-array')]"
}
]
},
"resources": [],
"outputs": {
"exampleObject": {
"value": "[variables('disk-array-on-object')]",
"type": "object"
},
"exampleArrayOnObject": {
"value": "[variables('disk-array-on-object').disks]",
"type" : "array"
},
"exampleObjectArray": {
"value": "[variables('top-level-object-array')]",
"type" : "array"
},
"exampleStringArray": {
"value": "[variables('top-level-string-array')]",
"type" : "array"
},
"exampleIntegerArray": {
"value": "[variables('top-level-integer-array')]",
"type" : "array"
}
}
}
Örnek şablonlar
Aşağıdaki örneklerde bir değişken için birden fazla değer oluşturmaya yönelik yaygın senaryolar gösterilmektedir.
| Şablon | Açıklama |
|---|---|
| Değişkenleri kopyalama | Değişkenler üzerinde yinelemenin farklı yollarını gösterir. |
| Birden çok güvenlik kuralı | Bir ağ güvenlik grubuna çeşitli güvenlik kuralları dağıtır. Güvenlik kurallarını bir parametreden oluşturur. Parametresi için birden çok NSG parametre dosyasına bakın. |
| Depolamayı değişkenlerle kopyalama | Bir değişkeni yineleme ve birden çok depolama hesabı oluşturma örneği. |
Sonraki Adımlar
- Öğreticiyi gözden geçirebilmek için bkz . Öğretici: ARM şablonlarıyla birden çok kaynak örneği oluşturma.
- Copy öğesinin diğer kullanımları için bkz:
- Şablonun bölümleri hakkında bilgi edinmek istiyorsanız bkz. ARM şablonlarının yapısını ve söz dizimini anlama.
- Şablonunuzu dağıtmayı öğrenmek için bkz. ARM şablonları ve Azure PowerShell ile kaynakları dağıtma.