Aspectos de la automatización de la plataforma y DevOps para Azure Virtual Desktop
Azure Virtual Desktop es un servicio administrado que proporciona un plano de control de Microsoft para el entorno de virtualización del escritorio.
Este artículo se centra en las tareas operativas que necesita para ejecutar un entorno de Azure Virtual Desktop. Puede aplicar cada recomendación de este artículo individualmente. No es necesario implementar todas las recomendaciones para que la automatización valga la pena.
Consideraciones de diseño
Revise las consideraciones siguientes al planear y diseñar el entorno de Azure Virtual Desktop.
Integración con DevOps
La automatización no implica necesariamente la integración con DevOps, pero esto ofrece muchas ventajas. La automatización del proceso de compilación de la imagen maestra merece la pena por varias razones:
- Al usar una canalización de DevOps, puede administrar mejor el flujo de automatización.
- Puede recibir informes y alertas sobre las implementaciones de una canalización de DevOps.
- Puede configurar la canalización para la integración con marcos de pruebas y la creación de puertas de aprobación para las fases del proceso de automatización.
- Puede iniciar canalizaciones desde muchos eventos predefinidos, como la publicación de una nueva imagen de la galería, una aplicación o el uso de una programación establecida.
- Cuando automatiza la creación del grupo de hosts, es fácil trasladar los metadatos de este grupo a una nueva ubicación geográfica a medida que hay nuevas ubicaciones disponibles.
Infraestructura como código
A medida que avanza hacia la adopción de prácticas de DevOps, tiene que elegir una herramienta para implementar los recursos de Azure. Hay dos categorías diferentes de herramientas de IaC. La opción preferida es una herramienta de IaC declarativa.
Azure proporciona opciones nativas con plantillas de ARM y Azure Bicep.
También puede encontrar herramientas de IaC de terceros, como Terraform de HashiCorp.
Configuración agrupada frente a personal
A medida que su organización escala horizontalmente su entorno, la mayor parte de la carga de trabajo se encuentra en una configuración agrupada en lugar de en una personal.
Las configuraciones personales suelen ser más costosas de ejecutar que las configuraciones agrupadas. Son adecuadas para usuarios específicos de cargas de trabajo, como los desarrolladores que normalmente requieren permisos elevados. Si ejecuta grupos de hosts en modo personal, intente mantener las máquinas como mantiene los equipos de escritorio físicos para reducir la cantidad de herramientas necesarias en su entorno.
Las configuraciones agrupadas son las más populares para la virtualización de escritorio, por lo que este artículo se centra en ellas. Los entornos agrupados tienen que actualizarse de forma diferente a los entornos tradicionales. Actualice las máquinas virtuales a partir de una imagen maestra con la frecuencia adecuada para su organización (normalmente suele oscilar entre 1 y 3 meses). Si su organización está altamente automatizada, es posible que pueda aumentar la cadencia a semanal o incluso nocturnamente si es necesario.
Creación de imágenes
Al escalar verticalmente el entorno de Azure Virtual Desktop, se crea un grupo de hosts a partir de la imagen maestra, que idealmente se crea a través de un proceso automatizado.
También puede usar una lista de comprobación de compilación para escalar verticalmente. Si tiene un entorno grande, el proceso de lista de comprobación solo debe formar parte de la configuración inicial de desarrollo y pruebas. Cuanto más automatice la creación de la imagen maestra, más seguro estará de la precisión de la compilación y la estabilidad del entorno.
No se recomienda usar la imagen existente para crear una máquina virtual que actualice con nuevas aplicaciones y cambios de configuración y, a continuación, capturarla para su usarla como "nueva" imagen maestra. Mantener este escenario implica un riesgo significativo y es un factor importante en los entornos de virtualización de escritorio que se convierten en estáticos y frágiles.
Hay muchas herramientas de automatización para crear imágenes maestras, entre ellas el proceso de Packer que se describe más adelante en este artículo. Use el conjunto de herramientas más adecuado para su organización. Independientemente de las herramientas que elija, automatice la mayor parte posible de la creación de imágenes maestras para que pueda mantener más fácilmente el estado del entorno de Azure Virtual Desktop.
Instalación de la aplicación
Las aplicaciones pueden ofrecerse a los usuarios de dos maneras: instaladas en la imagen o entregadas dinámicamente por usuario.
Las aplicaciones instaladas en la imagen tienen que ser universales para los usuarios y una parte del proceso de creación de imágenes automatizado. Las aplicaciones instaladas por imágenes pueden incluir productos de seguridad y el conjunto de aplicaciones de Microsoft 365.
Las aplicaciones entregadas dinámicamente por usuario incluyen cualquier otro componente que requiera un enfoque más flexible. Las aplicaciones entregadas dinámicamente pueden incluir aplicaciones restringidas a un grupo específico y aplicaciones que no son compatibles con otras aplicaciones.
Implementación de idiomas
A medida que los entornos de Azure Virtual Desktop se empiezan a escalar horizontalmente, puede que necesite traducir las imágenes al idioma nativo de los usuarios. Puede empezar por el idioma local si lo prefiere o puede agregar más idiomas a la imagen durante la compilación. Tenga en cuenta este requisito al seleccionar la imagen base. Por ejemplo, la imagen de la galería de Windows 10 optimizada previamente con y sin Microsoft 365 solo se proporciona en inglés de Estados Unidos (en-US).
Nota
Si usa Windows 10 Enterprise multisesión, la imagen no se puede crear en un idioma diferente. En este caso, deberá adaptar la imagen de la galería proporcionada. Para adaptar la imagen existente de la galería en-US, instale los idiomas adicionales antes de instalar otras aplicaciones.
Ubicaciones de implementación
Azure Virtual Desktop ofrece más libertad en cuanto a la ubicación geográfica de los grupos de hosts que un entorno de escritorio tradicional. Esta libertad existe porque todas las ubicaciones de Azure admiten Azure Virtual Desktop. Evite la creación de máquinas virtuales a partir de una imagen de la red de área extensa (WAN) haciendo que la imagen maestra esté disponible en las mismas ubicaciones que los usuarios.
Actualizaciones de imágenes maestras del grupo de hosts
Hay dos maneras de actualizar la imagen maestra en la que se basan las máquinas virtuales de un grupo de hosts determinado.
Método uno:
- Implemente un segundo grupo de hosts y, a continuación, transfiera los usuarios al nuevo grupo de hosts cuando esté listo.
- El grupo de hosts anterior estará disponible por si se necesita una reversión.
- Puede eliminar el grupo de hosts anterior después de que la organización esté conforme en que el nuevo grupo de hosts funciona correctamente.
Método dos:
- Establezca las máquinas virtuales existentes en modo de purga en el grupo de hosts.
- Implemente nuevas máquinas virtuales a partir de la imagen maestra actualizada en el mismo grupo de hosts.
- Tenga cuidado de no alcanzar las restricciones de recursos ni los límites de API al duplicar el número de máquinas virtuales de un único grupo de hosts.
Recomendaciones de diseño
Cuando diseñe el entorno de Azure Virtual Desktop de su organización, revise las siguientes recomendaciones.
Administración de código fuente
Se recomienda usar Git para administrar el código fuente y mantener una estrategia de bifurcación sencilla. Al usar Git para su entorno:
- Mantenga privados el repositorio de Git y el proyecto de Azure DevOps a menos que la directiva de empresa especifique que los repositorios deben ser públicos.
- Inicialice el repositorio con un archivo README para que pueda empezar a rellenar la información sobre el proyecto.
- Modifique los permisos del proyecto para permitir el acceso de otros miembros del equipo.
- Adopte un proceso básico de elemento de trabajo para desarrollar la canalización y mantener las cargas de trabajo optimizadas.
- Como mínimo, tendría que mantener dos repositorios: un repositorio para administrar las compilaciones de imágenes maestras y otro repositorio para administrar las implementaciones de Azure Virtual Desktop.
Pipelines
El sistema de implementación de canalización viene determinado por el sistema de administración de código fuente que elija.
Si su organización se ha estandarizado en Azure DevOps, use Azure Pipelines. Si su organización se ha estandarizado en GitHub, use Acciones de GitHub. Cualquiera de las opciones proporciona la capacidad de implementar un agente autohospedado dentro de la red, lo que supone varias ventajas, entre las que se incluyen:
- Asignación de tiempos de compilación más largos
- Posibilidad de acceder a los recursos dentro de la red
Controle las canalizaciones de implementación para que se puedan desencadenar automáticamente para implementar en un grupo de hosts de validación, pero no se envíen automáticamente al grupo de hosts de producción sin aprobación explícita.
Variables y Azure Key Vault
Al trabajar en Azure Pipelines, use grupos de variables.
- Los grupos de variables permiten tener parámetros repetibles en las canalizaciones, como secretos y ubicaciones de archivos.
- Las variables en los grupos de variables se pueden almacenar como pares clave-valor, pero el método recomendado es vincular un grupo de variables a una instancia de Azure Key Vault para extraer los secretos para usarlos en la canalización de implementación.
Creación de imágenes de Azure Virtual Desktop
Use el servicio Azure Image Builder (AIB) para automatizar los procesos de compilación, actualización, sysprep y distribución de las imágenes maestras. Este servicio puede usar una imagen base compatible de Azure Marketplace para cada compilación para asegurarse de que tenga las actualizaciones más recientes.
Nota
Azure Image Builder está disponible actualmente en determinadas regiones, pero puede distribuir las imágenes fuera de estas regiones.
Como parte del proceso de compilación de las imágenes maestras, tenga en cuenta todas las aplicaciones que necesita instalar y determine si se pueden instalar mediante scripts. Asegúrese de que tenga comandos de instalación de aplicaciones en scripts de PowerShell y haga "commit" de ellos en el repositorio de Git. Si no puede descargar instaladores de aplicaciones a través de la red pública de Internet, considere la posibilidad de colocar las aplicaciones en Azure Blob Storage. Si los procesos de instalación de la aplicación necesitan secretos, considere la posibilidad de colocarlos en Azure Key Vault.
Para empezar a trabajar con Azure Image Builder, consulte Creación de una imagen de Azure Virtual Desktop mediante Azure VM Image Builder y PowerShell.
Para invocar Azure Image Builder mediante canalizaciones de CI/CD, use la tarea de DevOps del servicio Azure Image Builder para Azure Pipelines o la acción Build Azure Virtual Machine Image para Acciones de GitHub.
HashiCorp Packer es una alternativa de código abierto. Ofrece las mismas funcionalidades que Azure Image Builder (que se basa en HashiCorp Packer), incluida la posibilidad de distribuir a una instancia de Azure Compute Gallery.
Para más información acerca de Packer, consulte el sitio web de Packer.
El método Packer consta de los requisitos previos siguientes:
- La licencia de Azure DevOps tiene que usar el conjunto completo de herramientas de Packer.
- Tiene que asignar a un usuario el rol adecuado en Microsoft Entra ID.
- Tiene que dar acceso de colaborador a la suscripción a entidades de servicio.
- Es necesaria una instancia de Azure Key Vault en la que almacenar secretos, y conceder a la entidad de servicio la administración de secretos en la directiva de acceso.
Cuando trabaje con Packer en la canalización de implementación:
- Instale las herramientas de Packer en el agente de compilación que usará en la canalización de implementación.
- Cree una fase de validación en la canalización para validar que la compilación funciona.
- Después de la validación, clone la fase de validación y establezca el modo de implementación en Incremental.
Otras consideraciones para el almacenamiento de archivos de Packer:
- Almacene los archivos y aprovisionamientos de Packer en una ubicación centralizada a la que pueda acceder Azure Pipelines. Se recomienda usar recursos compartidos de archivos de Azure para almacenar estos archivos de forma segura.
- Almacene las credenciales de acceso para Azure Files en Key Vault. Puede extraer las credenciales de acceso de Key Vault durante la compilación mediante variables de canalización.
- Además, almacene el nombre de archivo y la clave de cuenta de Packer en el almacén de claves que está vinculado al grupo de variables en Azure DevOps. Las canalizaciones acceden a estas credenciales para descargar los archivos de Packer en la máquina virtual que se usa para crear la imagen.
- Almacene la ruta de acceso UNC como variable en el grupo de variables de Azure DevOps.
Almacenamiento de imágenes de Azure Virtual Desktop
El servicio Azure Compute Gallery es la opción más sencilla para crear la estructura y organización de las imágenes maestras. Proporciona:
- Replicación global de imágenes en diferentes regiones de Azure.
- Asegúrese de que haya implementado imágenes en las regiones en las que se implementan hosts de sesión (máquinas virtuales) de Azure Virtual Desktop.
- Control de versiones y agrupación de imágenes para facilitar su administración. El control de versiones y la agrupación son útiles para revertir los grupos de hosts de Azure Virtual Desktop a versiones de imagen anteriores.
- Imágenes de alta disponibilidad con cuentas de almacenamiento con redundancia de zona (ZRS) en las regiones donde se admite Availability Zones. ZRS ofrece mejor resistencia a errores de zona.
- Uso compartido de imágenes de Azure Virtual Desktop entre suscripciones e incluso entre inquilinos de Microsoft Entra, mediante el control de acceso basado en rol (RBAC).
- Escalado de las implementaciones con réplicas de imagen en cada región.
- Planifique la implementación de una réplica por cada 20 máquinas virtuales que piense implementar simultáneamente.
Para más información, consulte Información general de Azure Compute Gallery.
Instalación de aplicaciones en imágenes de Azure Virtual Desktop
- Para las aplicaciones universales instaladas en la imagen maestra, use el método Packer descrito anteriormente en este artículo.
- App-V es actualmente el método admitido por Microsoft para las aplicaciones de streaming individuales para cada usuario.
- Use el enmascaramiento de aplicaciones de FSLogix para ocultar o revelar aplicaciones o complementos cuando esas aplicaciones no funcionen bien con App-V.
- Use la conexión de aplicaciones MSIX siempre que sea posible para entregar aplicaciones dinámicamente a los usuarios y reducir el tamaño general de la imagen maestra. También puede usar canalizaciones de CI/CD para automatizar el proceso de empaquetado de aplicaciones en el formato MSIX. Para más información, consulte la información general.
Implementación de idiomas en imágenes de Azure Virtual Desktop
Microsoft tiene procesos para instalar paquetes de idioma de forma manual o automática. Se recomienda mantener la mínima sobrecarga de administración posible y automatizar el proceso de instalación de idiomas.
El proceso implica descargar un script de PowerShell en la máquina virtual que se convertirá en la imagen. Encontrará scripts de automatización de ejemplo en la documentación de Microsoft. Si sigue la recomendación para las canalizaciones de Packer, puede incluir este proceso como una tarea de compilación adicional.
Para más información sobre cómo instalar paquetes de idioma en varias sesiones de Windows 10 Enterprise, consulte Instalación de paquetes de idioma en máquinas virtuales de Windows 10 en Azure Virtual Desktop.
Creación de grupos de hosts de Azure Virtual Desktop a partir de imágenes de Azure Compute Gallery
Siga un enfoque de infraestructura como código (IaC) para la implementación y personalización de recursos de Azure Virtual Desktop. Se deben usar siempre que sea posible para garantizar la coherencia en las implementaciones. Se pueden usar plantillas de ARM para implementar recursos de Azure Virtual Desktop como parte de una tarea de canalización de CI/CD. También puede emplearlas al usar Azure Portal, Azure PowerShell o la CLI de Azure.
A continuación se muestra una estrategia de actualización del grupo de hosts recomendada:
- Configure una canalización de CI/CD para compilar y distribuir imágenes maestras en Azure Compute Gallery.
- Designe un grupo de hosts de validación e implemente nuevos hosts de sesión en el grupo de hosts de validación mediante canalizaciones de CI/CD.
- Pruebe la automatización mediante un grupo de hosts de validación.
- Etiquete los hosts de sesión con un número de compilación o versión de la imagen para identificar la versión de la imagen que están ejecutando.
- Antes de la implementación, haga una validación (o comprobación) para asegurarse de que tenga suficiente cuota de proceso dentro de la suscripción.
- Después de hacer pruebas correctas en el grupo de validación, coloque los hosts de sesión existentes en modo de purga: las máquinas virtuales etiquetadas serán fáciles de identificar.
- Implemente los nuevos hosts de sesión y permita a los usuarios que se conecten.
- Después de hacer pruebas correctas en producción, empiece a desasignar los hosts de sesión antiguos para no incurrir en más cargos de proceso y, finalmente, elimínelos para no incurrir en más cargos de disco administrado.
- Los hosts de sesión eliminados solo se quitarán de Azure. Los objetos del equipo permanecerán en AD, por lo que estos objetos de equipo tendrán que eliminarse manualmente o a través de scripts.
En el ejemplo anterior se muestra un método de automatización de imágenes mediante Azure DevOps y una canalización de integración continua y entrega continua (CI/CD). Se trata de un enfoque nativo de la nube y ofrece una implementación menos perjudicial de los nuevos hosts de sesión sin tiempo de inactividad. Es importante tener en cuenta que debe pensar en el aumento de los recuentos de máquinas virtuales a medida que se eliminen las imágenes antiguas y se incorporen nuevas imágenes.
Como se ha mencionado antes, Azure Compute Gallery es un servicio que le permite compilar la estructura y la organización en torno a las imágenes. Se puede hacer referencia a estas imágenes en las implementaciones de IaC de los hosts de sesión de Azure Virtual Desktop. El servicio permite el control de versiones, la agrupación y la replicación de imágenes.
Al implementar los hosts de sesión con una plantilla de ARM o Terraform, se recomienda usar el id. de recurso de la imagen que creó en la galería como id. de origen de la imagen personalizada de la máquina virtual. La imagen que usa tiene que replicarse a través del servicio Azure Compute Gallery en las regiones de Azure donde va a implementar los grupos de hosts de Azure Virtual Desktop.
Pasos siguientes
Aprenda a implementar Azure Virtual Desktop mediante el acelerador de zonas de aterrizaje en escenarios de escala empresarial.