Anonymouus
Anonymouus

Reputation: 27

Multiple Vms Arm template with different Vm names,sizes and same custom

I have seen many templates to create multi vms as loop using copy function. Ex: vm1, vm2 etc. But this is not how we put in practice as each vm has different function and the naming convention doesn't help. I am trying to create a template with different vM names, sizes and a single custom Image. Can anyone please help?

Upvotes: 0

Views: 463

Answers (2)

pompeydigger
pompeydigger

Reputation: 11

I suggest using an array of name/value pairs, either in the parameters or variables section of your template, for example,

"parameters": {
    "vms": {
        "type": "array",
        "defaultValue": [
            {
                "name": "vm1",
                "size": "Standard_DS1_v2"
            },
            {
                "name": "vm2",
                "size": "Standard_A1_v2"
            }
        ]
    }
}

Then you can dereference the array with

"copy": {
    "name": "vmCopy",
    "count": "[length(parameters('vms'))]"    
}

and

parameters('vms')[copyIndex()].name
parameters('vms')[copyIndex()].size

Upvotes: 1

SaiKarri-MT
SaiKarri-MT

Reputation: 1301

By using parameters, we can differentiate the VM names, sizes etc:

"parameters": {
    "org": {
    "type": "array",
    "defaultValue": [
        "contoso",
        "fabrikam",
        "coho"
        ]
    }
},

<![endif]-->

As Copy functions can get the correct value from parameter array and can set the count with length() automatically.

Refer to MS Docs to understand more.

Also have a look on this answer, thanks to SamaraSoucy for explanation.

Upvotes: 0

Related Questions