En este artículo, se explica cómo se crean varias instancias de una propiedad en la plantilla de Azure Resource Manager (plantilla de ARM). Al agregar el bucle de copia a la sección de propiedades de un recurso, puede establecer de forma dinámica el número de elementos de una variable durante la implementación. Asimismo, evitará tener que repetir la sintaxis de la plantilla.
Solo se puede usar el bucle de copia con recursos de nivel superior, incluso cuando se aplica el bucle de copia a una propiedad. Para obtener información sobre cómo cambiar un recurso secundario a un recurso de nivel superior, vea Iteración para un recurso secundario.
Se recomienda Bicep porque ofrece las mismas funcionalidades que las plantillas de ARM y la sintaxis es más fácil de usar. Para más información, consulta loops.
Sintaxis
Agregue el elemento copy a la sección de recursos de la plantilla para establecer el número de elementos de una propiedad. El elemento copy tiene el siguiente formato general:
En name, especifique el nombre de la propiedad del recurso que desea crear.
La propiedad count especifica el número de iteraciones que desea realizar en la propiedad.
La propiedad input especifica las propiedades que desea repetir. Tiene que crear una matriz de elementos construida a partir del valor de la propiedad input.
Límites de copia
El valor de count no puede superar 800.
El valor de count no puede ser un número negativo. Puede ser cero si implementa la plantilla con una versión reciente de la CLI de Azure, PowerShell o la API de REST. Concretamente, se debe usar:
Azure PowerShell 2.6 o posterior
CLI de Azure 2.0.74 o posterior
API de REST versión 2019-05-10 o posterior
Las implementaciones vinculadas deben usar la versión 10-05-2019 o posterior de la API para el tipo de recurso de implementación
Las versiones anteriores de PowerShell, la CLI y API REST no admiten un valor de count de cero.
Iteración de propiedades
En el ejemplo siguiente se muestra cómo aplicar el bucle de copia a la propiedad dataDisks en una máquina virtual:
Tenga en cuenta que, cuando se usa copyIndex dentro de una iteración de propiedad, debe proporcionar el nombre de la iteración. La iteración de propiedades también admite un argumento de desplazamiento. El desplazamiento debe aparecer después del nombre de la iteración, como copyIndex('dataDisks', 1).
La operación de copia es útil al trabajar con matrices, ya que puede iterar a través de cada elemento de la matriz. Use la función length en la matriz para especificar el número de iteraciones, y copyIndex para recuperar el índice actual de la matriz.
En la plantilla de ejemplo siguiente se crea un grupo de conmutación por error para las bases de datos que se pasan como una matriz.
Cree plantillas de Bicep avanzadas usando condiciones para implementar recursos de manera condicional y usando bucles para implementar varias instancias de recursos.
Use la operación de copia y las matrices de una plantilla de Azure Resource Manager (plantilla de ARM) para realizar varias iteraciones al implementar recursos.
Use la operación de copia en una plantilla de Azure Resource Manager (plantilla de ARM) para realizar varias iteraciones al devolver un valor desde una implementación.