¿Qué son las plantillas de Resource Manager?
Con el traslado a la nube, muchos equipos adoptaron métodos de desarrollo ágiles. Estos equipos se iteran rápidamente. Necesitan implementar repetidamente sus soluciones en la nube y saber que su infraestructura se encuentra en un estado confiable. A medida que la infraestructura se convirtió en parte del proceso iterativo, la división entre las operaciones y el desarrollo desapareció. Por ello, los equipos necesitan administrar la infraestructura y el código de aplicación a través de un proceso unificado.
Para satisfacer estos desafíos, automatice las implementaciones y use la práctica de la infraestructura como código. En el código, debe definir la infraestructura que va a implementar. El código de infraestructura forma parte del proyecto. Al igual que el código de aplicación, almacene el código de infraestructura en un repositorio de código fuente y la versione. Cualquier miembro del equipo puede ejecutar el código e implementar entornos similares.
Para implementar la infraestructura como código para las soluciones de Azure, use las plantillas de Azure Resource Manager (plantillas de ARM). La plantilla es un archivo de notación de objetos JavaScript (JSON) que define la infraestructura y la configuración del proyecto. La plantilla usa sintaxis declarativa, lo que permite establecer lo que pretende implementar sin tener que escribir la secuencia de comandos de programación para crearla. En la plantilla se especifican los recursos que se van a implementar y las propiedades de esos recursos. También puede especificar en qué grupo de recursos se implementan esos recursos.
Sugerencia
Hemos presentado un nuevo lenguaje denominado Bícep que ofrece las mismas capacidades que las plantillas de ARM pero con una sintaxis más fácil de usar. Cada archivo de Bicep se convierte automáticamente en una plantilla de ARM durante la implementación. Si está pensando en usar infraestructura como opciones de código, le recomendamos que eche un vistazo a Bicep. Para más información, vea ¿Qué es Bicep?
¿Por qué elegir plantillas de Resource Manager?
Si intenta decidir entre usar plantillas de Resource Manager o una de las demás infraestructuras como servicios de código, tenga en cuenta las ventajas siguientes del uso de plantillas:
Sintaxis declarativa: las plantillas de Resource Manager permiten crear e implementar una infraestructura de Azure completa de forma declarativa. Por ejemplo, puede implementar no solo máquinas virtuales, sino también la infraestructura de red, los sistemas de almacenamiento y cualquier otro recurso que necesite.
Resultados repetibles: Implemente repetidamente la infraestructura a lo largo del ciclo de vida del desarrollo y tenga la seguridad de que los recursos se implementan de forma coherente. Las plantillas son idempotentes, lo que significa que puede implementar la misma plantilla varias veces y obtener los mismos tipos de recursos en el mismo estado. Puede desarrollar una plantilla que represente el estado deseado, en lugar de desarrollar muchas plantillas independientes para representar las actualizaciones. Por ejemplo, el siguiente archivo crea una cuenta de almacenamiento. Si implementa esta plantilla y la cuenta de almacenamiento con las propiedades especificadas ya existe, no se realiza ningún cambio.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"resources": {
"mystore": {
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2023-04-01",
"name": "mystorageaccount",
"location": "[parameters('location')]",
"sku": {
"name": "Standard_LRS"
},
"kind": "StorageV2"
}
}
}
Orquestación: No tiene que preocuparse por la complejidad de las operaciones de ordenación. Resource Manager se encarga de gestionar la implementación de recursos interdependientes para que se creen en el orden correcto. Cuando sea posible, Resource Manager implementa recursos en paralelo, por lo que las implementaciones finalizan más rápido que las implementaciones en serie. La plantilla se implementa mediante un comando, en lugar de hacerlo con varios comandos imperativos.
Archivos modulares: Puede dividir las plantillas en componentes más pequeños y reutilizables y vincularlos en el momento de la implementación. También puede anidar una plantilla dentro de otra.
Cree cualquier recurso de Azure: Puede usar inmediatamente los nuevos servicios y características de Azure en las plantillas. En cuanto un proveedor de recursos introduce nuevos recursos, puede implementarlos a través de plantillas. No tiene que esperar a que se actualicen las herramientas o los módulos antes de usar los nuevos servicios.
Extensibilidad: con los scripts de implementación, puede agregar scripts de PowerShell o Bash a las plantillas. Los scripts de implementación amplían su capacidad para configurar recursos durante la implementación. Puede incluir un script en la plantilla o almacenarlo en un origen externo y hacer referencia a él en la plantilla. Con los scripts de implementación, puede completar la configuración del entorno de un extremo a otro en una sola plantilla de ARM.
Prueba: Para asegurarse de que la plantilla sigue las directrices recomendadas, pruébela con el kit de herramientas de plantillas de ARM (arm-ttk). Este kit de pruebas es un script de PowerShell que puede descargar de GitHub. El kit de herramientas facilita el desarrollo de conocimientos con el lenguaje de plantilla.
Vista previa de los cambios: Use la operación what-if para obtener una vista previa de los cambios antes de implementar la plantilla. Con what-if, verá qué recursos crear, actualizar o eliminar y las propiedades de recursos que se van a cambiar. La operación hipotética comprueba el estado actual del entorno y elimina la necesidad de administrar el estado.
Validación integrada: La plantilla solo se implementa después de pasar la validación. Resource Manager comprueba la plantilla antes de iniciar la implementación para asegurarse de que se realiza correctamente. Es menos probable que la implementación se detenga a medio acabar.
Implementaciones con seguimiento: En Azure Portal puede revisar el historial de implementación y obtener información sobre la implementación de la plantilla. También puede ver la plantilla que se implementó, los valores de parámetro agregados y los valores de salida. Recuerde que no se realiza el seguimiento de otras infraestructuras como servicios de código a través del portal.
Directiva como código: Azure Policy es un marco de directiva como código para automatizar la gobernanza. Si usa directivas de Azure, la corrección de directivas se realiza en recursos no compatibles cuando se implementa a través de plantillas.
Planos técnicos de implementación: Puede aprovechar las ventajas de los Planos técnicos proporcionados por Microsoft para cumplir los estándares de cumplimiento normativo. Estos planos técnicos incluyen plantillas precompiladas para varias arquitecturas.
Integración de CI/CD: Puede integrar plantillas en las herramientas de integración continua e implementación continua (CI/CD). Esta integración automatiza las canalizaciones de versión para actualizaciones de infraestructura y aplicaciones rápidas y confiables. Mediante la tarea de plantilla de Resource Manager y Azure DevOps puede usar Azure Pipelines para compilar e implementar proyectos de plantillas de Resource Manager de manera continua. Para más información, consulte Proyecto de VS con canalizaciones y el Tutorial: Integración continua de plantillas de Azure Resource Manager en Azure Pipelines.
Código exportable: Puede obtener una plantilla para un grupo de recursos existente exportando el estado actual del grupo de recursos o viendo la plantilla usada para una implementación determinada. Una buena estrategia para aprender sobre la sintaxis de una plantilla es consultar la plantilla exportada.
Herramientas de creación: Puede crear plantillas con Visual Studio Code y la extensión de la herramienta de plantillas. Obtiene IntelliSense, resaltado de sintaxis, ayuda en línea y muchas otras funciones del lenguaje. Además de Visual Studio Code, también puede usar Visual Studio.
Archivo de plantilla
Dentro de la plantilla, puede escribir expresiones de plantilla que aumentan las capacidades de JSON. Estas expresiones usan las funciones que proporciona Resource Manager.
La plantilla contiene las secciones siguientes:
Parámetros: Proporcione valores durante la implementación que personalice para entornos diferentes al usar la misma plantilla.
Variables: Defina los valores que se reutilizan en las plantillas. Puede construirlos a partir de valores de parámetro.
Funciones definidas por el usuario: cree funciones personalizadas que simplifiquen la plantilla.
Recursos: especifique los recursos que se van a implementar.
Salidas: devuelva valores de los recursos implementados.
Proceso de implementación de plantillas
Cuando se implementa una plantilla, Resource Manager la convierte en operaciones de la API de REST. Por ejemplo, cuando Resource Manager recibe una plantilla con la siguiente definición de recursos:
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2022-09-01",
"name": "mystorageaccount",
"location": "centralus",
"sku": {
"name": "Standard_LRS"
},
"kind": "StorageV2"
},
]
Convierte la definición en la siguiente operación de API de REST, que envía al proveedor de recursos Microsoft.Storage:
PUT
https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/mystorageaccount?api-version=2022-09-01
REQUEST BODY
{
"location": "centralus",
"sku": {
"name": "Standard_LRS"
},
"kind": "StorageV2",
"properties": {}
}
Tenga en cuenta que el valor de apiVersion establecido en la plantilla para el recurso se usa como la versión de API para la operación REST. Puede implementar repetidamente la plantilla y tener confianza en que sigue funcionando. Al usar la misma versión de la API, no tiene que preocuparse de los cambios importantes que se pueden introducir en versiones posteriores.
Para implementar una plantilla, use cualquiera de las siguientes opciones:
Diseño de plantilla
Defina plantillas y grupos de recursos en función de cómo desea administrar la solución. Por ejemplo, puede implementar su aplicación de tres niveles por medio de una única plantilla en un solo grupo de recursos.
No es necesario definir toda la infraestructura en una sola plantilla. A menudo, tiene sentido dividir los requisitos de implementación en un conjunto de plantillas seleccionadas, específicas para un propósito. Estas plantillas se pueden reutilizar fácilmente para distintas soluciones. Para implementar una solución determinada, cree una plantilla principal que vincule todas las plantillas necesarias. En la imagen siguiente se muestra cómo implementar una solución de tres niveles a través de una plantilla primaria que incluye tres plantillas anidadas.
Si desea que sus niveles tengan ciclos de vida independientes, puede implementar los tres niveles en grupos de recursos independientes. Los recursos todavía se pueden vincular a recursos de otros grupos de recursos.
Para más información acerca de las plantillas anidadas, consulte Uso de plantillas vinculadas con Azure Resource Manager.
Uso compartido de plantillas
Después de crear la plantilla, es posible que quiera compartirla con otros usuarios de su organización. Las especificaciones de plantilla permiten almacenar una plantilla como un tipo de recurso. Use el control de acceso basado en rol para administrar el acceso a la especificación de plantilla. Los usuarios con acceso de lectura a la especificación de plantilla pueden implementarla, pero no cambiar la plantilla.
Este enfoque significa que puede compartir de forma segura plantillas que satisfagan los estándares de su organización.
Obtener soporte técnico
Estos son los pasos para abrir una incidencia de soporte técnico para problemas relacionados con la plantilla de Azure Resource Manager (ARM):
Abra Azure Portal.
Seleccione el icono Soporte técnico y solución de problemas en la esquina superior derecha.
En Describir brevemente el problema, escriba Plantilla de ARMy, después, seleccione Ir.
En ¿Con qué servicio tiene un problema?, seleccione Portal en Supervisión y administración y, después, seleccione Siguiente.
Elija una suscripción y seleccione Siguiente.
Seleccione Problema con plantillas de ARM y después Siguiente.
Pasos siguientes
- Para obtener un tutorial paso a paso que le guíe en el proceso de creación de una plantilla, consulte Tutorial: Creación e implementación de su primera plantilla de Resource Manager.
- Para información sobre las plantillas de ARM con una guía de módulos de Learn, consulte Implementación y administración de recursos en Azure mediante plantillas de ARM.
- Para obtener información sobre las propiedades de los archivos de plantilla, vea Nociones sobre la estructura y la sintaxis de las plantillas de Azure Resource Manager.
- Para obtener información sobre la exportación de plantillas, consulte Guía de inicio rápido: Creación e implementación de plantillas de Resource Manager mediante Azure Portal.
- Para obtener respuestas a preguntas comunes, consulte Preguntas más frecuentes sobre las plantillas de ARM.