Azure ARM Create MultipleVM - JackyChiou/jackychiou.github.io GitHub Wiki

My command:

PS C:\temp> New-AzResourceGroupDeployment -ResourceGroupName "jackywinupdate1rg" -TemplateFile "C:\Users\jchiou\Downloads\azuredeploy.json"              
cmdlet New-AzResourceGroupDeployment at command pipeline position 1
Supply values for the following parameters:
(Type !? for Help.)
location: Australia East
subnetName: default
virtualNetworkId: /subscriptions/7c……… /resourceGroups/jackywinupdate1rg/providers/Microsoft.Network/virtualNetworks/jackywinupdate1rg-vnet
virtualMachineRG: jackywinupdate1rg
osDiskType: StandardSSD_LRS
createOption: attach
osType: Windows
virtualMachineSize: Standard_D2s_v3
ip_list: 192.168.9.231,192.168.9.232
VM_name_list: vhd1_atm1_vm_0,vhd1_atm1_vm_1
nic_name_list: vhd1_atm1_nic_0,vhd1_atm1_nic_1
diskname_list: vhd1_atm1_disk_0,vhd1_atm1_disk_1

My JSON content:

{
    "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "location": {
            "type": "string"
        },
        "subnetName": {
            "type": "string"
        },
        "virtualNetworkId": {
            "type": "string"
        },
        "virtualMachineRG": {
            "type": "string"
        },
        "osDiskType": {
            "type": "string"
        },
        "createOption": {
            "type": "string"
        },
        "osType": {
            "type": "string"
        },
        "virtualMachineSize": {
            "type": "string"
        },
        "ip_list": {
            "type": "string"
        },
        "VM_name_list": {
            "type": "string"
        },
        "nic_name_list": {
            "type": "string"
        },
        "diskname_list": {
            "type": "string"
        }
    },
    "variables": {
        "vnetId": "[parameters('virtualNetworkId')]",
        "subnetRef": "[concat(variables('vnetId'), '/subnets/', parameters('subnetName'))]"
    },
    "resources": [
        {
            "name": "[split(parameters('nic_name_list'),',')[copyIndex()]]",
            "type": "Microsoft.Network/networkInterfaces",
            "apiVersion": "2018-10-01",
            "location": "[parameters('location')]",
            "dependsOn": [], 
            "copy": {
                "name": "niccopy",
                "count": "[length(split(parameters('nic_name_list'),','))]"
                 },           
            "properties": {
                "ipConfigurations": [
                    {
                        "name": "[concat('ipconfig',copyIndex(1))]",
                        "properties": {
                            "privateIpAddress": "[split(parameters('ip_list'),',')[copyIndex()]]",
                            "privateIpAllocationMethod": "Static",
                            "subnet": {
                                "id": "[concat(variables('vnetId'), '/subnets/', parameters('subnetName'))]"
                            }
                        }
                    }
                ]
            },
            "tags": {
                "dataClassification": "UNDEFINED"
            }
        },
        {
            "name": "[split(parameters('VM_name_list'),',')[copyIndex()]]",
            "type": "Microsoft.Compute/virtualMachines",
            "apiVersion": "2018-10-01",
            "location": "[parameters('location')]",
            "dependsOn": [
                "niccopy"
            ],            
            "copy": {
                "name": "VMCopy",
                "count": "[length(split(parameters('VM_name_list'),','))]"
            },
            "properties": {
                "hardwareProfile": {
                    "vmSize": "[parameters('virtualMachineSize')]"
                },
                "storageProfile": {
                    "osDisk": {
                        "createOption": "[parameters('createOption')]",
                        "osType": "[parameters('osType')]",
                        "managedDisk": {
                            "id": "[resourceId('Microsoft.Compute/disks', split(parameters('diskname_list'),',')[copyIndex()])]"
                        }
                    }
                },
                "networkProfile": {
                    "networkInterfaces": [
                        {
                            "id": "[resourceId('Microsoft.Network/networkInterfaces', split(parameters('nic_name_list'),',')[copyIndex()])]"                  
                        }
                    ]
                }
            },
            "tags": {
                "dataClassification": "UNDEFINED"
            }
        }
    ],
    "outputs": {
    }
}
# Result:
DeploymentName          : azuredeploy
ResourceGroupName       : jackywinupdate1rg
ProvisioningState       : Succeeded
Timestamp               : 9/4/2019 4:07:45 AM
Mode                    : Incremental
TemplateLink            :
Parameters              :
                          Name                  Type                       Value
                          ====================  =========================  ==========
                          location              String                     Australia East
                          subnetName            String                     default
                          virtualNetworkId      String                     /subscriptions/7cfb02…../resourceGroups/jackywinup
                          date1rg/providers/Microsoft.Network/virtualNetworks/jackywinupdate1rg-vnet
                          virtualMachineRG      String                     jackywinupdate1rg
                          osDiskType            String                     StandardSSD_LRS
                          createOption          String                     attach
                          osType                String                     Windows
                          virtualMachineSize    String                     Standard_D2s_v3
                          ip_list               String                     192.168.9.231,192.168.9.232
                          vM_name_list          String                     vhd1_atm1_vm_0,vhd1_atm1_vm_1
                          nic_name_list         String                     vhd1_atm1_nic_0,vhd1_atm1_nic_1
                          diskname_list         String                     vhd1_atm1_disk_0,vhd1_atm1_disk_1