Publicado en

Actualización de VDA (Citrix) en remoto y automatizado

En esta historia de poltergeist veremos como poder actualizar una o cientos de VDAs de Citrix en remoto y de forma desatendida. Lo primero que necesitamos es colocarnos nuestro Proton Blaster (PB) en la espalda y sacar un café doble; esta historia será larga y terrorífica.

Como de costumbre, os cuento mi experiencia y como yo lo he hecho, luego cada uno que cace sus propios fantasmas en su plataforma y adecue las partes del scripts en su entorno.

Si miramos la docu de Citrix, todo es muy sencillo (y no digo que no), pero creo que no es suficiente para poderlo hacer de manera totalmente automática en un entorno real.

Esto es aplicable a cualquier entorno, siempre y cuando se adapte él. Yo lo hago con Hyperv, pero si es vmware o cualquier otro hipervisor es cuestión de seguir el mismo procedimiento adaptado.

Mi idea era hacer un proceso completo, que tuviera una forma rápida de hacer rollback (marcha atrás) de una manera rápida e indolora en cada caso. Os podéis imaginar como acabo mi PB, lleno de fantasmas que capture por el camino.

Empecemos por parametrizar y tengamos a mano todo lo que queremos que sea variable. En mi caso:

vdi (Nombre completo), ddc (Nombre de un delivery controller para comprobaciones y poner en mantenimiento el escritorio), vmm (virtual machine manager) version_citrix (solo para meter info en los checkpoint), cred (credenciales para conectar al vdi) y credInfra (para conectar a la infra)

PowerShell

Lo siguiente es cargar los módulos que necesitamos en Powershell

PowerShell

Seguimos haciendo unas comprobaciones previas. Primero si tenemos conectividad desde nuestra central de alertas de caza-fantasmas a los servidores. Testeo el puerto 5985 que es el de powershell remoto y el 445 porque copiaremos software a local. Después el acceso con las credenciales y para ello se comprueba que exista la carpeta c:\windows\temp que es donde dejaremos la basura temporal para luego sacarla toda de golpe. Y por ultimo que haya espacio en el disco. Con 5gb suficiente.

PowerShell

Si todo va bien, continuamos con el siguiente bloque. Ahora creamos un checkpoint para poder tener un punto de partida y de regreso si algo va mal. Ante la duda, volvemos a este punto y todo debería de funcionar como estaba. Luego, hay que poner en mantenimiento el VDI en Citrix para que el cliente no pueda usarlo durante el proceso. Por ultimo mapeamos un Drive virtual y copiamos el software necesario a local. Os lo recomiendo si no queréis morir en el intento de ejecutarlo en remoto.

PowerShell

Pues hasta aquí todo ha sido para ponernos guapos para el baile. Ahora es cuando nos toca darlo todo en la pista y triunfar. Instalamos los requisitos previos: NET Framework 4.8 y Microsoft Visual C++ (x86 y x64). El script comprueba los códigos de salida y los reinicios necesarios y reengancha con el vdi tras el reinicio. Aquí empezaron a aparecer los primeros fantasmas y veréis mismas cosas hechas de diferente manera, pues depende de ciertos problemas que fueron apareciéndome, servicios que bloqueaban operaciones, o que se paran en cierto proceso y rompe la comunicación… cada uno es libre de cambiar lo que necesite. Suerte… ejem… Sigamos.

PowerShell

Y por fin nos toca bailar nuestra canción favorita, es hora de actualizar la VDA. En este bloque instalaremos la VDA, este proceso requiere de uno o más reinicios que contemplo, proceso y controlo para seguir con la ejecución en el código. Es complicado decir porqué hago cada cosa tal y como la hago, pero lo que os he dicho, básicamente he cazado fantasmas… Además de instalar la VDA, si todo va bien se hacen algunos cambios en BrokerAgent.exe.config, podéis añadir o quitar a gusto. Por ultimo se elimina la carpeta temporal con todo el software y los logs. En caso de fallo los logs se mantienen en ese directorio para poder hacer debug.

PowerShell

Llegados a este punto, ya tenemos todo listo. Solo nos queda quitar el mantenimiento del escritorio y comprobar que esta registrado.

PowerShell

Si juntas todo esto en un script y te lo dejas a gusto tendras una manera de actualizar cientos de Vdas, bien de forma secuencial o en bloques. Para eso te dejo que uses tu imaginación, tal vez en otro post hable sobre mis experiencias de como hacer eso de manera fácil, por hoy ha sido suficiente.

Y si has llegado hasta aquí leyendo, eres un héroe: Espero que tu VDA este totalmente a salvo, no hayas tenido que usar el PB y hayas disfrutado de tu canción favorita en la pista de baile.