There are times when multiple instances of the same resource type are needed—for example: creating multiple virtual machines, multiple databases, bus service queues, and so on. Although it is possible to code the same resource type multiple times one after another with different names, it is definitely not the best way to author ARM templates for provisioning multiple instances of the same resource type.
The ARM template provides a copy feature that can be used to loop over any resource type. Later in the chapter, we will see how to loop over resource properties as well. Apart from the copy element, ARM templates provide a few other functions that help with creating expressions, enabling looping ...