アームテンプレートの削除


Azure Resource Manager ( ARM )テンプレートにループする方法は一つだけです.コピー要素をテンプレートのリソースセクションに追加することで、展開するリソースの数を設定できます.また、テンプレートの構文を繰り返すことを避ける.
これは、特定のリソースの複数のインスタンスを作成するのに非常に便利です.
コピー要素には次の一般的な書式があります.
"copy": {
  "name": "<name-of-loop>",
  "count": <number-of-iterations>,
  "mode": "serial" <or> "parallel",
  "batchSize": <number-to-deploy-serially>
}
  • Nameプロパティは、ループを識別する任意の値です(800を超えることはできません).
  • countプロパティは、リソース型の反復回数を指定します.
  • リソースが並列またはシーケンスで展開されているかどうかを指定するモードとBatchSizeプロパティ.
  • ビデオを見る

  • YouTube
  • Channel9
  • 単純ループ


    以下の例で最も簡単なコピーは、StorageAccountCount パラメータあなたがあなたの資源を与える名前に注意を払うことは、非常に重要です.各リソースの名前はcopyIndex() 関数は、ループ内の現在の反復を返します.copyindex ()はゼロベースです.したがって、次の例を示します.
    "name": "[concat('storage', copyIndex())]",
    
    これらの名前を作成します
  • storage0
  • storage1
  • storage2
  • {
        "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
        "contentVersion": "1.0.0.0",
        "parameters": {
            "storageAccountName": {
                "type": "string",
                "defaultValue": "devopslab"
            },
            "storageAccountType": {
                "type": "string",
                "defaultValue": "Standard_LRS"
            },
            "StorageAccountCount": {
                "type": "int",
                "defaultValue": 2
            }
        },
        "variables": {
        },
        "resources": [
            {
                "name": "[toLower(concat(parameters('storageAccountName'),copyIndex(),uniqueString(resourceGroup().id)))]",
                "copy": {
                    "name": "storagecopy",
                    "count": "[parameters('StorageAccountCount')]"
                },
                "type": "Microsoft.Storage/storageAccounts",
                "apiVersion": "2015-06-15",
                "location": "[resourceGroup().location]",
                "properties": {
                    "accountType": "[parameters('storageAccountType')]"
                }
            }
        ],
        "outputs": {
        }
    }
    

    単純な直列ループ


    以下のテンプレートで説明されているシリアルモードは、単純なコピーループと同じ規則と概念に従います.既定では、リソースマネージャーはリソースを並列に作成します.
    {
        "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
        "contentVersion": "1.0.0.0",
        "parameters": {
            "storageAccountName": {
                "type": "string",
                "metadata": {
                    "description": "Name of storage account"
                },
                "defaultValue": "devopslab"
            },
            "storageAccountType": {
                "type": "string",
                "metadata": {
                    "description": "Type of storage account"
                },
                "defaultValue": "Standard_LRS"
            },
            "StorageAccountCount": {
                "type": "int",
                "defaultValue": 5,
                "metadata": {
                    "description": "Number of storage accounts"
                }
            }
        },
        "variables": {
            "storageApiVersion": "2015-06-15"
        },
        "resources": [
            {
                "name": "[toLower(concat(parameters('storageAccountName'),copyIndex(),uniqueString(resourceGroup().id)))]",
                "copy": {
                    "name": "storagecopy",
                    "count": "[parameters('StorageAccountCount')]",
                    "mode": "serial"
                },
                "type": "Microsoft.Storage/storageAccounts",
                "apiVersion": "[variables('storageApiVersion')]",
                "location": "[resourceGroup().location]",
                "properties": {
                    "accountType": "[parameters('storageAccountType')]"
                }
            }
        ],
        "outputs": {
        }
    }
    

    単純なシリアルバッチループ


    リソースの複数のインスタンスをシリアルでシリアル化するには、シリアルに設定モードを設定します.そして、どのように多くのインスタンスを一度に展開するかを制御する必要がありますbatchSize パラメータ
    {
        "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
        "contentVersion": "1.0.0.0",
        "parameters": {
            "storageAccountName": {
                "type": "string",
                "defaultValue": "devopslab"
            },
            "storageAccountType": {
                "type": "string",
                "defaultValue": "Standard_LRS"
            },
            "StorageAccountCount": {
                "type": "int",
                "defaultValue": 6
            }
        },
        "variables": {
            "storageApiVersion": "2015-06-15"
        },
        "resources": [
            {
                "name": "[toLower(concat(parameters('storageAccountName'),copyIndex(),uniqueString(resourceGroup().id)))]",
                "copy": {
                    "name": "storagecopy",
                    "count": "[parameters('StorageAccountCount')]",
                    "mode": "serial",
                    "batchSize": 2
                },
                "type": "Microsoft.Storage/storageAccounts",
                "apiVersion": "[variables('storageApiVersion')]",
                "location": "[resourceGroup().location]",
                "properties": {
                    "accountType": "[parameters('storageAccountType')]"
                }
            }
        ],
        "outputs": {
        }
    }
    

    アレイループ


    配列ループは、より多くのthaのリソースの数を制御することができます.この例では、パラメーターのセクションに定義されている配列があります.
    この場合、配列には次の名前が含まれます.
  • "TWT "
  • 「コントゾ」
  • "Fabrikam "
  • 『coho』
  • the count コピーセクションのパラメータは、配列の項目数をカウントし、その数を使用してループを設定します.
    {
        "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
        "contentVersion": "1.0.0.0",
        "parameters": {
            "storageAccountType": {
                "type": "string",
                "metadata": {
                    "description": "Type of storage account"
                },
                "defaultValue": "Standard_LRS"
            },
            "StorageAccountNames": {
                "type": "array",
                "defaultValue": [
                    "twt",
                    "contoso",
                    "fabrikam",
                    "coho"
                ],
                "metadata": {
                    "description": "Array of storage account names"
                }
            }
        },
        "variables": {
        },
        "resources": [
            {
                "name": "[toLower(concat(parameters('StorageAccountNames')[copyIndex()],uniqueString(resourceGroup().id)))]",
                "copy": {
                    "name": "storagecopy",
                    "count": "[length(parameters('StorageAccountNames'))]"
                },
                "type": "Microsoft.Storage/storageAccounts",
                "apiVersion": "2015-06-15",
                "location": "[resourceGroup().location]",
                "properties": {
                    "accountType": "[parameters('storageAccountType')]"
                }
            }
        ],
        "outputs": {
        }
    }
    
    命名のためにここで注意しなければならない.
    この例では"name": "[toLower(concat(parameters('StorageAccountNames')[copyIndex()],uniqueString(resourceGroup().id)))]したがって、リソースの名前には、配列の名前が接尾辞として一意の識別子を使用します.

    参照:

  • Resource iteration in ARM templates
  • GitHub Resources