ARM şablonlarında çıkış yinelemesi

Bu makalede, Azure Resource Manager şablonunuzdaki (ARM şablonu) bir çıkış 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.

Syntax

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 sayım 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