Implementación en máquinas virtuales de Azure mediante grupos de implementación en Azure Pipelines

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019

En versiones anteriores de Azure Pipelines, las aplicaciones que debían implementarse en varios servidores requerían una cantidad significativa de planeamiento y mantenimiento. Era necesario habilitar manualmente la comunicación remota de Windows PowerShell, abrir los puertos necesarios e instalar los agentes de implementación en cada uno de los servidores. Las canalizaciones tenían que administrarse manualmente si se requería una implementación de lanzamiento.

Todos los desafíos anteriores han evolucionado perfectamente con la introducción de los grupos de implementación.

Un grupo de implementación instala un agente de implementación en cada uno de los servidores de destino del grupo configurado e indica a la canalización de versión que implemente gradualmente la aplicación en esos servidores. Se pueden crear varias canalizaciones para las implementaciones de lanzamiento para que la versión más reciente de una aplicación se entregue por fases a varios grupos de usuarios para la validación de las características recién introducidas.

Nota:

Los grupos de implementación son un concepto que se usa en las canalizaciones clásicas. Si usa canalizaciones YAML, consulte Entornos.

En este tutorial, obtendrá información sobre lo siguiente:

  • Aprovisionamiento de la infraestructura de la máquina virtual en Azure mediante una plantilla
  • Creación de un grupo de implementación de Azure Pipelines
  • Creación y ejecución de una canalización de CI/CD para implementar la solución con un grupo de implementación

Requisitos previos

  • Una cuenta de Microsoft Azure.
  • Una organización de Azure DevOps.

Use el generador de demostraciones de Azure DevOps para aprovisionar el proyecto del tutorial en la organización de Azure DevOps.

Configuración del entorno de implementación de Azure

Los siguientes recursos se aprovisionan en Azure mediante una plantilla de ARM:

  • Seis servidores web de máquinas virtuales con IIS configurado
  • Máquina virtual con SQL Server (servidor de base de datos)
  • Azure Network Load Balancer
  1. Haga clic en el vínculo Implementar en Azure que se indica a continuación para iniciar el aprovisionamiento de recursos. Proporcione toda la información necesaria y seleccione Comprar. Puede usar cualquier combinación de nombres de usuario administrativos y contraseñas permitidos, ya que no se usan de nuevo en este tutorial. Env Prefix Name tiene prefijo en todos los nombres de recurso para garantizar que esos recursos se generan con nombres únicos globales. Intente usar algo personal o aleatorio, pero si ve algún conflicto de nomenclatura durante la validación o la creación, puede probar a cambiar este parámetro y volver a ejecutarlo.

    Implementación en Azure

    Captura de pantalla donde se indica cómo configurar el entorno de implementación de Azure.

    Nota:

    La implementación tarda aproximadamente entre 10 y 15 minutos. Si recibe algún error de conflicto de nomenclatura, pruebe a cambiar el parámetro para Env Prefix Name.

  2. Una vez completada la implementación, puede revisar todos los recursos generados en el grupo de recursos especificado mediante Azure Portal. Seleccione la máquina virtual del servidor de base de datos con sqlSrv en su nombre para ver los detalles.

    Implementación de un grupo de recursos en Azure.

  3. Tome nota del nombre DNS. Este valor es obligatorio en un paso posterior. Puede usar el botón Copiar para copiarlo en el portapapeles.

    Implementación de DNS mediante SQL en Azure.

Creación y configuración de un grupo de implementación

Azure Pipelines facilita la organización de los servidores necesarios para implementar aplicaciones. Un grupo de implementación es una colección de máquinas virtuales con agentes de implementación. Cada una de las máquinas interactúa con Azure Pipelines para coordinar la implementación de la aplicación.

Puesto que no se requiere ningún cambio de configuración para la canalización de compilación, la compilación se desencadena automáticamente una vez aprovisionado el proyecto. Esta compilación se usa cuando se pone en cola una versión más adelante.

  1. Vaya al proyecto de Azure DevOps creado por el generador de demostración.

  2. En Canalizaciones, vaya a Grupos de implementación.

    Navegación a Grupos de implementación en Canalizaciones.

  3. Seleccione Agregar un grupo de implementación.

  4. Escriba el valor en Nombre del grupo de implementación de Versión y seleccione Crear. Se genera un script de registro. Puede registrar los servidores de destino mediante el script proporcionado si trabaja por su cuenta. Sin embargo, en este tutorial, los servidores de destino se registran automáticamente como parte de la canalización de versión. La definición de versión implementa la aplicación en los servidores de destino por fases. Una fase es una agrupación lógica de las tareas que define el destino en tiempo de ejecución en el que se ejecutarán las tareas. Cada fase del grupo de implementación ejecuta tareas en las máquinas definidas en el grupo de implementación.

  5. En Canalizaciones, vaya a Versiones. Seleccione la canalización de versión denominada Grupos de implementación y seleccione Editar.

  6. Seleccione la pestaña Tareas para ver las tareas de implementación de la canalización. Las tareas se organizan como tres fases denominadas fase del agente, fase del grupo de implementación y fase de implementación de IIS.

  7. Seleccione la fase del agente. En esta fase, los servidores de destino se asocian al grupo de implementación mediante la tarea de implementación del grupo de recursos de Azure. Para la ejecución se debe definir un grupo de agentes y una especificación. Seleccione el grupo Azure Pipelines y la especificación más reciente de Windows.

    Configuración de la fase del agente.

  8. Seleccione la tarea Implementación de un grupo de recursos de Azure. Configure la conexión de servicio a la suscripción de Azure que se usó anteriormente para crear la infraestructura. Después de autorizar la conexión, seleccione el grupo de recursos creado para este tutorial.

    Creación de una conexión de servicio de Azure.

  9. Esta tarea se ejecutará en las máquinas virtuales hospedadas en Azure y debe poder volver a conectarse a esta canalización para completar los requisitos del grupo de implementación. Para proteger la conexión, necesitará un token de acceso personal (PAT). En la lista desplegable Configuración de usuario, abra Tokens de acceso personal en una nueva pestaña. La mayoría de los exploradores admiten la apertura de un vínculo en una nueva pestaña mediante el menú contextual que aparece al hacer clic con el botón derecho o al pulsar Ctrl+Clic.

    Ir a los tokens de acceso personal.

  10. En la nueva pestaña, seleccione Nuevo token.

  11. Escriba un nombre y seleccione el ámbito Acceso completo. Seleccione Crear para crear el token. Una vez creado, copie el token y cierre la pestaña del explorador. Vuelva al editor de Azure Pipeline.

    Creación de un token de acceso personal

  12. En Conexión de servicio de Azure Pipelines, seleccione Nuevo.

    Incorporación de una conexión de servicio de Azure Pipelines.

  13. Escriba la dirección URL de conexión a la instancia actual de Azure DevOps. Esta dirección URL se parece a https://dev.azure.com/[Your account]. Pegue el token de acceso personal creado anteriormente y especifique un valor en Nombre de conexión de servicio. Seleccione Comprobar y guardar.

    Creación de una conexión de servicio de Azure Pipelines.

    Nota:

    Para registrar un agente, debe ser miembro del rol de administrador en el grupo de agentes. La identidad del administrador del grupo de agentes solo es necesaria en el momento del registro. La identidad del administrador no se conserva en el agente y no se usa en ninguna comunicación posterior entre el agente y Azure Pipelines. Una vez registrado el agente, no es necesario renovar el token de acceso personal, porque solo es necesario en el momento del registro.

  14. Seleccione el proyecto de equipo actual y el grupo de implementación creado anteriormente.

    Configuración del grupo de implementación de Azure Pipelines.

  15. Seleccione la fase del grupo de implementación. Esta fase ejecuta tareas en las máquinas definidas en el grupo de implementación. Esta fase está vinculada a la etiqueta SQL-Svr-DB. Elija el grupo de implementación de la lista desplegable.

    Configuración de la fase del grupo de implementación.

  16. Seleccione la fase de implementación de IIS. Esta fase implementa la aplicación en los servidores web mediante las tareas especificadas. Esta fase está vinculada a la etiqueta WebSrv. Elija el grupo de implementación de la lista desplegable.

  17. Seleccione la tarea Desconectar equilibrador de carga de la red de Azure. A medida que las máquinas de destino se conectan a NLB, esta tarea desconecta las máquinas de NLB antes de la implementación y las vuelve a conectar después. Configure la tarea para usar la conexión, el grupo de recursos y el equilibrador de carga (solo debe haber uno) de Azure.

  18. Seleccione la tarea Administrar la aplicación web de IIS. Esta tarea se ejecuta en las máquinas de destino de implementación registradas con el grupo de implementación configurado para la tarea o fase. Crea en el entorno local una aplicación web y un grupo de aplicaciones con el nombre PartsUnlimited que se ejecutan en el puerto 80.

  19. Seleccione la tarea Implementar aplicación web de IIS. Esta tarea se ejecuta en las máquinas de destino de implementación registradas con el grupo de implementación configurado para la tarea o fase. Implementa la aplicación en el servidor IIS mediante Web Deploy.

  20. Seleccione la tarea Conectar equilibrador de carga de la red de Azure. Configure la tarea para usar la conexión, el grupo de recursos y el equilibrador de carga (solo debe haber uno) de Azure.

  21. Seleccione la pestaña Variables y escriba los valores de variable como se indica a continuación.

    Nombre de variable Valor de variable
    DatabaseName PartsUnlimited-Dev
    DBPassword P2ssw0rd@123
    DBUserName sqladmin
    DefaultConnectionString Data Source=[YOUR_DNS_NAME];Initial Catalog=PartsUnlimited-Dev;User ID=sqladmin;Password=P2ssw0rd@123;MultipleActiveResultSets=False;Connection Timeout=30;
    nombreDeServidor localhost

    Importante

    Asegúrese de reemplazar el nombre DNS de SQL Server (que anotó antes de Azure Portal) en la variable DefaultConnectionString.

    DefaultConnectionString debe ser similar a esta cadena después de reemplazar el DNS de SQL:

    Data Source=cust1sqljo5zndv53idtw.westus2.cloudapp.azure.com;Initial Catalog=PartsUnlimited-Dev;User ID=sqladmin;Password=P2ssw0rd@123;MultipleActiveResultSets=False;Connection Timeout=30;

    La lista de variables definitiva debe ser similar a esta:

    Configuración de variables de canalización.

    Nota:

    Puede recibir un error que indique que la variable DefaultConnectionString debe guardarse como secreto. Si esto sucede, seleccione la variable y haga clic en el icono de candado que aparece junto a su valor para protegerla.

Puesta en cola de una versión y revisión de la implementación

  1. Seleccione Guardar y confirme.

  2. Seleccione Crear versión y confirme. Siga la versión hasta la finalización. La implementación está lista para su revisión.

  3. En Azure Portal, abra una de las máquinas virtuales web del grupo de recursos. Puede seleccionar cualquiera que tenga websrv en el nombre.

    Búsqueda de una máquina virtual web.

  4. Copie el DNS de la máquina virtual. Azure Load Balancer distribuirá el tráfico entrante entre las instancias correctas de los servidores definidos en un conjunto de carga equilibrada. Como resultado, el DNS de todas las instancias de servidor web es el mismo.

    Búsqueda del dominio de la aplicación web.

  5. Abra una nueva pestaña del explorador en el DNS de la máquina virtual. Confirme que la aplicación implementada se está ejecutando.

    Revisión de la aplicación.

Resumen

En este tutorial ha implementado una aplicación web en un conjunto de máquinas virtuales de Azure mediante Azure Pipelines y grupos de implementación. Aunque este escenario abarca solo algunas máquinas, puede escalar fácilmente el proceso hasta admitir cientos o incluso miles de ellas que usen prácticamente cualquier configuración.

Limpiar recursos

En este tutorial se ha creado un proyecto de Azure DevOps y algunos recursos en Azure. Si no va a seguir usando estos recursos, elimínelos con los pasos siguientes:

  1. Elimine el proyecto de Azure DevOps creado por el generador de demostración de Azure DevOps.

  2. Todos los recursos de Azure creados durante este tutorial se asignaron al grupo de recursos especificado durante la creación. Al eliminar ese grupo, se eliminarán los recursos que contenga. Esta eliminación se puede realizar mediante la CLI o el portal.

Pasos siguientes