Soy Oscar Mas y os quiero enseñar una de las muchas funcionalidades que nos puede aportar Jenkin. Para los que no conozcan Jenkins, es una herramienta de “continuous integration” y “continuous delivery” la cual puede gestionar tareas en nuestros sistemas en función de nuestras necesidades.
En este post no voy a gestionar ni continuous integration ni continuous delivery, lo que os voy a explicar es como realizar todas las tareas habituales que colocaríamos en nuestro programador de tareas en caso de ser Windows o en nuestro Crontab en caso de ser Linux de una manera centralizada. De esta forma conseguimos centralizar todas las tareas que hemos de realizar en nuestros diferentes sistemas operativos desde una única ubicación.
Para hacerlo sencillo, desde Jenkins rebotaremos un sistema basado en Linux y desde ese mismo Jenkins, enviaremos una tarea a un Windows para se realice las actualizaciones del propio sistema operativo.
La administración y configuración de las tareas las realizaremos desde nuestro sistema operativo basado en Ubuntu 16.04 LTS, en el cual instalaremos Jenkins y desde allí podremos lanzar tareas tanto a nuestros servidores de Windows como a nuestros servidores de Linux.
El esquema lógico sería el siguiente:
Los sistemas operativos escogidos para realizar el lab son Ubuntu 16.04 LTS y Windows 2012 R2, pero se puede usar cualquier tipo de sistema operativo. Las funcionalidades de los 3 servidores son:
- jenkins-ub.ilba.cat: Sistema operativo basado en Ubuntu 16.04 LTS, donde estará instalada la administración de Jenkins
- jenkins-cli-ub.ilba.cat: Sistema operativo basado en Ubuntu 16.04 LTS, en el cual lanzaremos comandos desde Jenkins. En el ejemplo simplemente lo rebotaremos el equipo
- jenkins-cli-ws.ilba.cat: Sistema operativo basado en Windows 2012 R2, en el cual lanzaremos un powershell para que se actualice el Sistema Operativo.
El esquema del montaje es el siguiente:
Como siempre, para hacer más ameno el post lo he divido en diferentes partes:


Hola, muy interesante su publicación 🙂 . Una consulta, si tuviese el master en Linux y varios Windows con la tarea de actualizar, ¿cada uno de estos debería ser un slave? O, por el contrario, ¿sería bueno si solo tuviera un solo slave Windows que ejecute cierto script el cual permita conectarse remotamente a las demás máquinas y actualizarlas o realizar alguna otra tarea? Muchas gracias por su respuesta.