Tierney - stock.adobe.com

Evaluar Conozca los pros y contras de las tecnologías, productos y proyectos que está considerando.

Automatice estas tareas DevOps para una máxima productividad

DevOps es trabajo duro, pero solo por adelantado. El objetivo, una vez que los equipos construyen una secuencia y configuran la automatización, es hacerse a un lado y ver cómo fluyen las compilaciones.

Hay muchas formas de explicar qué es DevOps. Una de las mejores formas es dividirlo en sus partes más básicas: sin conjuntos de herramientas, sin lenguajes, solo la base sobre la cual construir una práctica de DevOps.

Lo primero y más importante es el código, que se almacena en un repositorio controlado por versiones. Sin embargo, ese código también necesita un entorno en el que ejecutarse. Los pasos necesarios para mover el código del repositorio a ese entorno, así como los desencadenantes que ejecutan esos pasos, también son fundamentales para DevOps.

Este artículo cubre cómo automatizar los procesos de DevOps utilizando un par de ejemplos con módulos de PowerShell e implementaciones de infraestructura como código con Terraform y Git.

Automatice los pasos de compilación y lanzamiento de DevOps

Desde el punto de vista del desarrollo, el código pasa por una serie de pasos estándar que varían en complejidad según el lenguaje y el propósito del repositorio. Para simplificar, nos centraremos en dos pasos principales: compilar y lanzar.

Los pasos necesarios para crear un módulo de secuencia de comandos de PowerShell (escribir código, fusionar, probar y luego empaquetarlo como un artefacto) se automatizan fácilmente. Para el módulo de secuencia de comandos de PowerShell (un módulo de PowerShell integrado en PowerShell, en lugar de en C#) extraiga todas las funciones en un archivo de módulo; construya un manifiesto; ejecute pruebas Pester, incluidas las pruebas PSScriptAnalyzer, para verificar que los comandos de entrada se ejecutaron correctamente; y luego, si todas las pruebas pasan, empaquete el módulo y publíquelo en un repositorio de artefactos. Publique módulos públicos en la Galería de PowerShell. Todos estos pasos se pueden escribir en PowerShell directamente, ya sea con scripts personalizados o un proceso de compilación estandarizado, como Invoke-Build o psake. Dado que puede escribir todo en PowerShell, la compilación también podría ejecutarse localmente en una máquina de desarrollo. Sin embargo, no se activará automáticamente como lo haría en una plataforma DevOps.

Este ejemplo omite el lanzamiento del módulo PowerShell porque el código solo se empaqueta y publica en un repositorio de artefactos. No hay entornos en este escenario. Para discutir los lanzamientos, veamos un ejemplo de infraestructura como código de Terraform.

Terraform usa plantillas para definir configuraciones de recursos en módulos. Para extraer dependencias, use la automatización para recopilar los módulos y colocarlos en la carpeta de módulos del archivo de configuración durante el proceso de compilación. A continuación, use el comando validate de Terraform para verificar que la configuración esté formateada correctamente. La compilación debería detenerse si esto falla. Una vez que se completen las dos tareas anteriores, comprima todo y publique el archivo que se recopilará en el lanzamiento.

El paso de lanzamiento es muy importante para las implementaciones de infraestructura como código, especialmente si la implementación es compatible con una plataforma de software más grande. Por lo tanto, los administradores generalmente lanzan a entornos que no son de producción antes de lanzarlos a los usuarios finales. Aquí es donde entran en juego los entornos de desarrollo, pruebas, puesta en escena y producción. Todo el desarrollo ocurre en el entorno de desarrollo; el personal de QA realiza pruebas en el entorno de pruebas; cualquier prueba final o demostración de nuevas funciones se ejecutan en el entorno de ensayo; y los usuarios finales acceden a la plataforma en el entorno de producción.

Configure la automatización para mover la última versión de la configuración de Terraform a cada entorno después de que se completen las pruebas automatizadas o las aprobaciones del comprobador de control de calidad. En departamentos más pequeños, estos pueden provenir de solo un par de personas.

Activadores de automatización de DevOps

Ahora que sabemos qué pasos de DevOps automatizar, la siguiente etapa es determinar cuándo automatizarlos. Para este ejemplo, usaremos Git, un sistema de código abierto para el control de versiones y administración de código distribuido.

Una solicitud de extracción, una notificación de que se realizaron cambios en el código, es una de las ventajas clave de la ramificación, una práctica de administración de software que crea copias del código para mantener la estabilidad del original mientras el personal de TI realiza cambios aislados. Una solicitud de extracción proporciona un evento para ejecutar una compilación de prueba en la rama antes de introducirla en la rama maestra. Puede etiquetar ramas como compilaciones de solicitud de extracción y elegir si desea publicarlas. Ejecute una compilación en la rama de solicitud de extracción para probar si el código se compilará correctamente en la rama principal. Si no se compila correctamente, solucione cualquier problema antes de fusionar el código con la rama maestra. Los proyectos de código con varios colaboradores a menudo requieren que la compilación pase antes de que el código se fusione en la rama maestra. Esto es cierto tanto para el ejemplo del módulo de PowerShell, como para el ejemplo de infraestructura como código anterior.

Después de que se aprueba la solicitud de extracción, preferiblemente por los medios automatizados mencionados anteriormente, el código se fusiona en la rama maestra, que proporciona otro disparador de automatización útil. Primero, se construirá la rama maestra. A diferencia de una compilación de solicitud de extracción, una compilación de rama maestra publica el código en el repositorio de artefactos con la versión de destino completa. Los administradores de TI pueden activar una versión automáticamente cuando una rama maestra se compila correctamente.

En el ejemplo de infraestructura como código, la construcción de la rama maestra es donde se implementa la configuración en la plataforma en la nube y el entorno de elección: desarrollo, prueba, puesta en escena o producción.

Investigue más sobre Desarrollo de aplicaciones

Close