ARM şablonlarında çıkış yinelemesi
Bu makalede, Azure Resource Manager şablonunuzdaki (ARM şablonu) bir çıktı için birden fazla değer oluşturma adımları gösterilmektedir. Şablonunuzun çıkışlar bölümüne kopyalama döngüsü ekleyerek dağıtım sırasında bir dizi öğeyi dinamik olarak döndürebilirsiniz.
Kopyalama döngüsünü kaynaklar, bir kaynaktaki özellikler ve değişkenlerle de kullanabilirsiniz.
İpucu
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
Bir dizi öğe döndürmek için öğesini şablonunuzun çıkış bölümüne ekleyin. copy öğesi aşağıdaki genel biçime sahiptir:
"copy": {
"count": <number-of-iterations>,
"input": <values-for-the-output>
}
özelliği, count
çıkış değeri 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.
Sınırları kopyalama
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.
Çıkış yinelemesi
Aşağıdaki örnek, değişken sayıda depolama hesabı oluşturur ve her depolama hesabı için bir uç nokta döndürür:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageCount": {
"type": "int",
"defaultValue": 2
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"variables": {
"baseName": "[format('storage{0}', uniqueString(resourceGroup().id))]"
},
"resources": [
{
"copy": {
"name": "storagecopy",
"count": "[parameters('storageCount')]"
},
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2022-09-01",
"name": "[format('{0}{1}', copyIndex(), variables('baseName'))]",
"location": "[parameters('location')]",
"sku": {
"name": "Standard_LRS"
},
"kind": "Storage",
"properties": {}
}
],
"outputs": {
"storageEndpoints": {
"type": "array",
"copy": {
"count": "[parameters('storageCount')]",
"input": "[reference(format('{0}{1}', copyIndex(), variables('baseName'))).primaryEndpoints.blob]"
}
}
}
}
Yukarıdaki şablon aşağıdaki değerlere sahip bir dizi döndürür:
[
"https://0storagecfrbqnnmpeudi.blob.core.windows.net/",
"https://1storagecfrbqnnmpeudi.blob.core.windows.net/"
]
Sonraki örnek, yeni depolama hesaplarından üç özellik döndürür.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageCount": {
"type": "int",
"defaultValue": 2
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"variables": {
"baseName": "[format('storage{0}', uniqueString(resourceGroup().id))]"
},
"resources": [
{
"copy": {
"name": "storagecopy",
"count": "[length(range(0, parameters('storageCount')))]"
},
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2022-09-01",
"name": "[format('{0}{1}', range(0, parameters('storageCount'))[copyIndex()], variables('baseName'))]",
"location": "[parameters('location')]",
"sku": {
"name": "Standard_LRS"
},
"kind": "Storage",
"properties": {}
}
],
"outputs": {
"storageInfo": {
"type": "array",
"copy": {
"count": "[length(range(0, parameters('storageCount')))]",
"input": {
"id": "[resourceId('Microsoft.Storage/storageAccounts', format('{0}{1}', copyIndex(), variables('baseName')))]",
"blobEndpoint": "[reference(format('{0}{1}', copyIndex(), variables('baseName'))).primaryEndpoints.blob]",
"status": "[reference(format('{0}{1}', copyIndex(), variables('baseName'))).statusOfPrimary]"
}
}
}
}
}
Yukarıdaki örnek aşağıdaki değerlere sahip bir dizi döndürür:
[
{
"id": "/subscriptions/00000000/resourceGroups/demoGroup/providers/Microsoft.Storage/storageAccounts/0storagecfrbqnnmpeudi",
"blobEndpoint": "https://0storagecfrbqnnmpeudi.blob.core.windows.net/",
"status": "available"
},
{
"id": "/subscriptions/00000000/resourceGroups/demoGroup/providers/Microsoft.Storage/storageAccounts/1storagecfrbqnnmpeudi",
"blobEndpoint": "https://1storagecfrbqnnmpeudi.blob.core.windows.net/",
"status": "available"
}
]
Sonraki adımlar
- Öğreticiyi gözden geçirebilmek için bkz . Öğretici: ARM şablonlarıyla birden çok kaynak örneği oluşturma.
- Kopyalama döngüsünün 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.