La automatización se ha vuelto indispensable en los sistemas de información hoy en día. El movimiento DevOps ciertamente no es ajeno a esto, y muchos editores se han subido a este nicho, con el objetivo de mejorar nuestros flujos de trabajo o procesos.
Entonces, ¿está reservado solo para ingenieros DevOps o de la nube? ¡De ninguna manera! La automatización también puede facilitar la vida del administrador de sistemas/red al simplificar las tareas cotidianas o preparar las tareas de implementación.
Rundeck responde perfectamente a este problema y con sus +10 años de existencia, el proyecto está bien maduro y listo para servirte. Disponible en versión comunitaria y de código abierto, o en versión pro, se adapta a todas las necesidades y no es muy exigente, por lo que seguramente encontrará un lugar en tu infraestructura.
Este software puede ejecutar múltiples tareas en varios servidores, como comandos, scripts, copias de archivos, etc. Todo esto en el momento o de manera programada.
En este tutorial, vamos a implementar un servidor Rundeck y ver cómo usarlo para administrar servidores Linux.
Instalación de Rundeck
Un buen punto de partida: Rundeck se instala de muchas maneras. Todo el mundo podrá encontrar lo que necesita, ya que se puede desplegar tanto a través de un contenedor Docker como instalarse en Ubuntu, CentOS o incluso Windows.
Aquí voy a detallar solo la instalación en Debian. Los usuarios de Linux adaptarán a su distribución y los usuarios de Windows no se perderán con la instalación, que en definitiva es bastante estándar. Para quienes lo deseen, también es posible el despliegue desde un archivo JAR.
En cuanto a los requisitos previos, necesitarás como mínimo una máquina con 2 CPU, 4 GB de RAM y 20 GB de disco.
Primero, en nuestro recién instalado Debian, como de costumbre, preparemos la instalación:
apt-get update && apt-get upgrade -y
Si estás en Windows, debes obtener el paquete de instalación. Está disponible aquí: www.rundeck.com/downloads. Atención, deberás proporcionar al menos un correo electrónico. Los paquetes Deb y RPM también están disponibles en la misma página para quienes lo prefieran.
Voy a detallar la instalación a través de los repositorios, lo que te permitirá actualizaciones más fáciles.
Antes de realizar la instalación propiamente dicha, y dado que Rundeck se ejecuta en Java, instala la versión 11 de OpenJDK:
apt-get install openjdk-11-jdk-headless -y
Si estás en Debian con un usuario y un root, también instala el paquete sudo.
apt-get install sudo -y
Ahora que todo está bien, pasemos a la instalación de los repositorios de Rundeck, se proporciona un script, y para otras distribuciones, podrás encontrar toda la documentación aquí:
curl https://raw.githubusercontent.com/rundeck/packaging/main/scripts/deb-setup.sh 2> /dev/null | sudo bash -s rundeck
Nota: en la documentación, asegúrate de seleccionar la pestaña “Community“, ya que por defecto los comandos y guías se dan para la versión pro.
Una vez hecho esto, la instalación se puede realizar como cualquier otra aplicación:
apt-get install rundeck
La instalación no tarda mucho. Sin embargo, hay un pequeño detalle para los usuarios de Debian (y seguramente también de Ubuntu): a diferencia de lo que indica la documentación, el primer inicio debe realizarse imperativamente a través de Initd, de lo contrario tendrás un mensaje de error:
/etc/init.d/rundeckd start
Una vez iniciado, ¡agrega el servicio para que se inicie con el sistema!
systemctl enable rundeckd
¡Listo, tu servidor Rundeck está instalado!
Configuración de Rundeck
A partir de ahora, tu servidor debería responder en el puerto 4440 a su dirección IP.
Dependiendo del método de instalación, es posible que no sea este el caso.
Si te encuentras en esta situación, no te preocupes, hay una solución. Para los demás, si planeas acceder a tu servidor desde otra máquina, también puede ser interesante hacer estas modificaciones.
Primero, el primer archivo a configurar es “framework.properties” que se encuentra en el directorio “/etc/rundeck
“. El elemento que nos interesa está al principio de este archivo:
# ----------------------------------------------------------------
# Rundeck server connection information
# ----------------------------------------------------------------
framework.server.name = localhost
framework.server.hostname = localhost
framework.server.port = 4440
framework.server.url = http://localhost:4440
Cambia “localhost” por el nombre de tu servidor, si es necesario, también puedes cambiar el número de puerto. Finalmente, y lo más importante, cambia la URL escribiendo tu dirección IP (o nombre de host si tienes resolución DNS o NetBIOS en tu red) en lugar de localhost en la línea “framework.server.url“.
Luego, el segundo archivo a modificar es el llamado “rundeck-config.properties
” que se encuentra en el mismo directorio.
La línea que nos interesa aquí es la llamada “grails.serverURL
“, vuelve a cambiar “localhost” por tu dirección IP o nombre de host.
Guarda y reinicia Rundeck, deberías poder acceder a la página web.
El pequeño inconveniente de Rundeck es que tarda mucho en arrancar. Por lo tanto, si no accedes de inmediato a la página después del reinicio, no significa necesariamente que no funcione. Para estar seguro, puedes mostrar el contenido de /var/log/rundeck/service.log
. Mientras este archivo no muestre “Aplicación Grail ejecutándose en http://…….“, tu servidor no estará listo.
¡Ahora es el momento de conectarse! Los inicios de sesión predeterminados son admin/admin
, pero por supuesto te recomiendo encarecidamente que los cambies si estás en producción.
Creación del Primer Proyecto
Rundeck funciona en forma de proyectos. Cada proyecto puede tener su propia lista de nodos, sus propios usuarios, sus propios trabajos, etc. La ventaja aquí es que se puede dividir la gestión entre varios equipos, o para diferentes seguimientos o proyectos de clientes, por ejemplo.
Otra ventaja es que los proyectos se pueden archivar e importar a otro servidor. Esto facilita en gran medida las migraciones o la recuperación después de un desastre.
El primer paso es crear un proyecto, dentro del cual importaremos nuestros servidores. Haz clic en el botón “Create New Project“:

Nota: si quieres acceder a la documentación oficial, puedes hacerlo desde aquí a través del botón “Docs“. Incluso a la derecha tienes acceso a una especie de tutorial explicado (en inglés) para familiarizarte con la herramienta.
La creación del proyecto solicitará algunas informaciones. Primero, por supuesto, el nombre y la descripción del proyecto, y opcionalmente se puede agregar una etiqueta:

Como habrás entendido, voy a tomar como ejemplo el despliegue de una pila LAMP para Linux.
Luego vienen algunas opciones. Estas opciones se definen a nivel de proyecto. Esto significa que posteriormente se pueden anular, es decir, que son las opciones predeterminadas de tu proyecto.
La pestaña “Execution History Clean” te permite establecer una política de retención del historial de ejecución. De forma predeterminada, todas las tareas ejecutadas se registran en el historial durante 60 días, con un máximo de 50. La tarea predeterminada se ejecuta todos los días al mediodía. Si estos valores no te convienen, basta con marcar la casilla y elegir los tuyos.
La pestaña “Execution mode” te permitirá elegir activar o desactivar la ejecución de tareas, y eso para dos métodos: programados o manuales. Podrás, entre otras cosas, permitir solo la ejecución manual de tareas a partir de 24 horas después de la creación del proyecto, o por el contrario, desactivarla.
La pestaña “User interface” te permite configurar ciertos aspectos de la interfaz de usuario, como mostrar u ocultar el archivo readme del proyecto, desplegar automáticamente los grupos de trabajos, etc.
La pestaña “Default Node Executor” es relativamente importante. El Ejecutor de Nodos es el responsable de la ejecución de comandos y scripts en los nodos remotos. Deberás, por lo tanto, elegir qué “ejecutor” de comandos utilizar. Puedes elegir entre SSH, WinRM a través de Python, SSHJ (para Java) o incluso Ansible. También es posible utilizar tu propio ejecutable (Script Execution).

Por mi parte, dejo SSH, ya que es lo que más me conviene. Todavía no he probado el uso conjunto de Ansible y Rundeck, para los nodos Windows, prefiero la administración a través de SSH desde que eso es posible precisamente para tener los mismos métodos de acceso. Si estás en full Linux o en un entorno híbrido Linux/Windows, te aconsejo SSH, si estás en full Windows, WinRM podría ser más adecuado.
Cabe señalar que la edición Enterprise de Rundeck permite el uso de más métodos, como por ejemplo PowerShell.
Podrás indicarle a Rundeck dónde quieres que se almacenen los archivos de claves SSH o las contraseñas. De forma predeterminada, se almacenan en /var/lib/rundeck/project/nombredelproyecto/keys
.
Lo mismo para el “Default File Copier“, tendrás la opción entre varios “motores” para enviar archivos a los hosts remotos. De forma predeterminada, se elige SCP, que al estar basado en SSH, te ofrecen las mismas opciones que antes.
¡Una vez hayas hecho tus elecciones, solo tienes que hacer clic en “Create“!
Agregando la Primera Máquina
Justo después de la creación de tu proyecto, Rundeck te muestra la página “Edit Nodes” para agregar tus nodos.
Esta adición se realiza leyendo un archivo en formato XML, JSON o YAML, disponible de forma local o a través de una URL, o incluso en un almacenamiento S3 e incluso importado desde Ansible. Esta fuente se declara a través del botón “Add a new node source“.

Elijo un archivo local, hago clic en “File” y elijo el formato YAML en la lista desplegable (por supuesto, no estás obligado a hacerlo).

En la línea “File Path“, indico la ruta donde quiero “guardar” mi archivo. Este archivo debe poder ser leído y escrito por el usuario rundeck, creado durante la instalación. Cabe señalar que no se crea ningún directorio home para este último, así que lo voy a crear, pero por supuesto puedes ponerlo donde quieras.
Luego vienen las opciones, como la posibilidad de generar directamente el archivo en cuestión si no existe (que es mi caso) y la posibilidad de incluir el propio servidor Rundeck en la lista de nodos. En mi caso, esto no tiene mucho sentido; si creo otro proyecto para gestionar la conformidad y la actualización de todos mis servidores, podría haberlo necesitado, por ejemplo. Lo dejo aquí para tener un ejemplo de entrada en este archivo, si eres principiante, te aconsejo que hagas lo mismo para tener una idea de la sintaxis y los campos esperados.
No marco “Require File Exists” ya que voy a generarlo, pero marco la casilla “Writable” para poder agregar los nodos directamente desde Rundeck. Si esta casilla no está marcada, la adición de nodos deberá hacerse a través de SSH o directamente en la consola en el archivo, si prefieres separar los permisos.

Una vez completada la información, guardo en esta pantalla Y en la siguiente para que los cambios se apliquen. Notarás que, por defecto, hay una fuente local presente, que representa al propio servidor Rundeck. Como se mencionó anteriormente, esta fuente no me es necesaria para este proyecto, así que la elimino.
Nos quedamos con nuestro archivo YAML (o el formato elegido) como única fuente. En esta misma pantalla, es posible hacer clic en la pestaña “Edit” para agregar directamente mis nodos (¡solo si has hecho el archivo editable!). Una vez en la pestaña, un clic en “Modify” te permitirá descubrir el archivo tal como existe inicialmente:
debtemp:
nodename: debtemp
hostname: debtemp
osVersion: 5.10.0-23-amd64
osFamily: unix
osArch: amd64
description: Rundeck server node
osName: Linux
username: rundeck
tags: ''
Si, como yo, has elegido YAML, ¡recuerda que este lenguaje es muy estricto con la indentación! Si lo desglosamos:
nodename
: nombre del nodo tal como deseas que aparezca en Rundeckhostname
: nombre del host o IPosVersion
: Versión del sistemaosFamily
: tipo de sistemaosArch
: arquitecturadescription
: como su nombre indicaosName
: nombre del SOusername
: nombre del usuario bajo el cual se realizarán las acciones, muy importantetags
: serie de palabras clave que te permitirán clasificar tus nodos para encontrarlos más fácilmente en una búsqueda
Basándome en este modelo, voy a insertar mi nuevo nodo, que es un servidor Debian:
srv-dev:
nodename: srv-dev
hostname: 192.168.1.44
osVersion: 5.10.0-27-amd64
osFamily: unix
osArch: amd64
description: Servidor de desarrollo
osName: Debian
username: rundeck
tags: dev linux
Guardo y ya tengo mi nodo agregado. Pero, ¿cómo se conecta Rundeck a él?
Agregar la Clave SSH
Como me conecto por SSH, lo más sencillo y seguro es agregar una clave para el usuario root que Rundeck pueda utilizar. Para ello, primero hay que generar la clave y luego agregar la clave pública en mi Debian a las claves autorizadas. Para hacer todo esto, hay varias opciones: PuTTYGen desde un host externo u OpenSSH/OpenSSL desde el host de Rundeck (a través de la terminal).
El resultado es el mismo. Personalmente, paso por PUTTYGen y un host externo, ya que elimino los archivos de claves después de la operación, para que la clave de Rundeck no ande por ahí. Es solo un punto de vista personal, no una instrucción.
Así que, en mi PC Windows, inicio PUTTYGen y genero un par de claves. Para quienes no lo hayan usado nunca, basta con mover el ratón en el cuadro superior hasta que la barra de progreso esté completa.

Una vez generada la clave, se mostrará su huella digital en la parte superior, es esta huella la que habrá que copiar:

Como se indica arriba de la clave, hay que agregar esta línea (¡sí, es una sola línea, y ten cuidado con la barra de desplazamiento a la derecha!) en el archivo “authorized_keys
” en el directorio “.ssh
” del usuario correspondiente en el servidor de destino, aquí root en mi srv-dev.
Entonces, me conecto por SSH a este servidor, luego cambio a root y verifico el directorio del usuario:
root@srv-dev:~# ls -al
total 16
drwx------ 2 root root 4096 23 janv. 12:02 .
drwxr-xr-x 18 root root 4096 23 janv. 12:24 ..
-rw-r--r-- 1 root root 571 10 avril 2021 .bashrc
-rw-r--r-- 1 root root 161 9 juil. 2019 .profile
No hay directorio ssh aquí, así que lo vamos a crear, ¡no olvides el punto delante porque se trata de un directorio oculto!
mkdir .ssh
Y, dentro de este directorio, vamos a crear el archivo authorized_keys y pegar el texto de PUTTYgen:
nano .ssh/authorized_keys
No te pongo la línea aquí, porque no tiene interés y es muy larga. Sin embargo, termina con rsa-key-20240123
. Esta cadena al final es un comentario que se puede modificar, te recomiendo poner algo que te recuerde que esta clave se usa para Rundeck, lo que facilitará las cosas cuando la cambies, especialmente si tú mismo usas una clave para conectarte.
Nota: parto del principio de que usas una clave por uso, es decir, una clave para tus conexiones como administrador y otra diferente para Rundeck (y posiblemente otra para tu colega). ¡Se desaconseja encarecidamente utilizar la misma clave!
Guarda el archivo y cierra. Ahora hay que darle la clave privada a Rundeck. Para ello, en la interfaz de administración, haz clic en la parte inferior izquierda en “Project Settings” y luego en “Key Storage“.
Haz clic en “Add or Upload a Key” para agregar tu clave, lo que te lleva a la siguiente pantalla:

Aquí es posible copiar y pegar el texto de la clave privada o cargar el archivo directamente. Voy a elegir la segunda opción. De vuelta en PUTTYgen, haz clic en “Conversions” y luego en “Export OpenSSH key“. PUTTYgen te advertirá y te pedirá que confirmes la creación de la clave sin contraseña. Si quieres agregar una, sabe que ssh-pass será necesario en el servidor Rundeck. Guarda tu clave privada y, en la pantalla anterior, despliega la lista en “Upload File” y busca tu clave privada.
Presta mucha atención a la ruta azul en esta ventana y cópiala. De hecho, es esta ruta la que tendrás que declarar en el archivo de nodos para que Rundeck sepa qué clave utilizar. Para mí, es esta ruta:
keys/project/Infra1/key_dev
Guarda, tu clave se ha agregado. Vuelve a “Project Settings” y luego haz clic en “Edit Nodes“. Encontrarás el archivo YAML que creaste anteriormente, haz clic en “Modify” para agregar la siguiente entrada al final del bloque correspondiente a tu nodo (¡pon atención a la indentación!):
ssh-key-storage-path: keys/project/Infra1/key_dev
Guarda el archivo. Para probar el buen funcionamiento, vamos a utilizar la función de comandos, que permite ejecutar un comando en uno o varios nodos del proyecto. Para ello, haz clic en “Commands” en el menú de la izquierda, lo que te llevará a esta ventana:

Lo primero que hay que rellenar es el nodo (o grupo de nodos). Aquí, o bien introduces directamente el nombre del nodo, o bien escribes “tag:
” seguido de la etiqueta para seleccionar los nodos, o bien usas una expresión regular para elegir varios nodos según su nombre (por ejemplo name: srv.* seleccionará todos los nodos cuyo nombre comience por srv). Más información sobre los filtros en la documentación oficial.
Aquí solo tengo un nodo, así que voy a escribir directamente su nombre, luego en la línea de comando voy a hacer simplemente un hostname:

El host me ha respondido, es hora de pasar a la siguiente etapa.
Creación del Job
En un proyecto Rundeck, se habla de Trabajo (Job) para las acciones realizadas en los nodos, podríamos llamarlos playbooks. Estos trabajos incluirán una serie de acciones que se ejecutarán de manera secuencial en uno o más nodos, dependiendo de lo que elijas.
Para crear un trabajo, haz clic en “Jobs” en el menú de la izquierda y luego en “Create a New Job“, lo que te llevará a la siguiente ventana, en la pestaña “Details“:

Aquí, como habrás entendido, se trata de dar un nombre al trabajo y una descripción, estos dos elementos se mostrarán en la página de trabajos. Rellena los campos y pasa a la pestaña “Workflow“.
Aquí es donde se juega todo. ¡No podría mostrarte en un artículo todo el alcance de la herramienta, hay tantas posibilidades diferentes! Por ejemplo, la sección “Options” te permitirá definir opciones que podrán reutilizarse en los diferentes pasos de tu trabajo, como la fecha de hoy o una contraseña para que no se almacene en texto plano, sino que se pase en cada ejecución, etc. Encontrarás todas estas posibilidades en la documentación. Para nuestro ejemplo, no voy a utilizar ninguna.
Cada acción de un trabajo se denomina “Paso” (Step), y como puedes ver, las diferentes posibilidades ya permiten hacer bastantes cosas:

Command
te permite ejecutar un comando, como hicimos antes con hostnameScript
te permite escribir directamente en Rundeck un script que se ejecutará en la máquina remotaScript file or URL
te permite utilizar un archivo de script previamente escrito o recuperar un script desde una página web (por ejemplo, en un Gist)Job reference
te permite incluir un trabajo en otro trabajo (¡la instantánea de la administración de sistemas!)
Pero donde se vuelve muy interesante es con los plugins, por defecto, la versión comunitaria de Rundeck viene con 5 plugins:
- Ansible Playbook Inline te permitirá escribir un playbook directamente en Rundeck desde la página web
- Ansible Playbook te permitirá utilizar un playbook preexistente
- Copy file te dará la posibilidad de copiar archivos desde el servidor Rundeck al servidor de destino. Útil si también instalas un Git para la actualización de scripts, por ejemplo.
- Local command ejecutará un comando en el servidor Rundeck
- Data Node Step, por su parte, permite declarar datos ad hoc para este trabajo (aunque nunca lo he usado, así que no estoy seguro de lo que hace realmente)
¿No está mal, verdad? Pero lo mejor es que ¡puedes agregar plugins! Encontrarás para Git, Docker, Azure, etc. En resumen, todo (o casi todo) es posible. Ten en cuenta que los plugins oficiales solo están disponibles en la versión Enterprise. Para el resto, puedes comenzar en su GitHub.
Vamos a mantenernos simples, para recordar, se trata de desplegar la pila LAMP en los servidores de destino. Así que si lo desglosamos, debo:
- Actualizar los repositorios y los paquetes
- Instalar Apache, PHP (y otros paquetes útiles) y MariaDB
- Verificar que los servicios se hayan iniciado y activarlos al arrancar
En mi flujo de trabajo, voy a dividir todo esto en pasos para verificar bien cada etapa. Así que voy a agregar un paso para la actualización, para eso no necesito un script, elijo un comando:
Command: apt-get update && apt-get upgrade -y
Step Label: Actualizar la lista y los paquetes
Guardo y luego instalo lo que necesito, aquí tampoco necesito un script, un comando es suficiente. Lo agrego haciendo clic en “Add A Step“:
Command: apt-get install apache2 mariadb-server php php-cli libapache2-mod-php php-mysql -y
Step Label: Instalación de paquetes de pila
Nota: ¡no olvides el “-y
” al final! No podrás interactuar con el trabajo una vez que se haya lanzado…
Luego tengo que recargar Apache porque se iniciará solo después de la instalación, y quiero que tome en cuenta PHP, y luego lo agrego al arranque. Aquí prefiero usar un script:

Step Label: Reinicio y comprobación de Apache
Observarás que no he puesto un shebang. Es normal, porque es bash y es mi terminal predeterminada. Si alguna vez uso otro lenguaje, tendré que indicarlo obligatoriamente. También notarás que puedes crear argumentos para tu script.
Ahora, en una instalación normal, ejecutaría “mysql_secure_installation”, pero aquí no es posible. Tendré que hacerlo manualmente (bueno, a través de un script, por supuesto) y darle una contraseña a root. Pero no quiero que esté claramente indicada en mi paso. Aquí es donde las opciones pueden salvarnos, así que vamos a crear una opción, que será la contraseña de MariaDB que habrá que ingresar durante el despliegue. Se recordará en mi script mediante una variable.
Haz clic en “Add an Option” en la parte superior de la ventana (antes de los pasos) y completa el formulario. No voy a hacer una captura de pantalla aquí porque sería demasiado grande, pero voy a detallar los diferentes campos:
Option type
: tengo la opción entre Texto y Archivo, aquí elijo TextoOption name
: el nombre que le doy a mi opción. Es importante, ya que con este nombre la invocaré después. Elijo llamarla db-passOption label
: si quieres dar una etiqueta a la opción, no pongo ninguna- Opcionalmente una descripción más explícita, no es necesario para mí
Default Value
para insertar un valor predeterminado si no se indica nada durante la ejecución. En mi caso, ¡sería contraproducente!Input Type
te permite elegir el tipo de entrada. Voy a elegir Segura porque se trata de una contraseña. Por lo tanto, Rundeck no la guardaráSort Value
me permite ordenar, útil para una lista pero no en mi casoRequired
: si se marca Sí, el trabajo no podrá ejecutarse sin haber completado la opción, y es lo que quiero, así que sí.- El siguiente campo te permite ocultar la opción en la página del trabajo, no lo necesito.
Una vez completado todo, Rundeck me dice cómo usarlo:

Como lo voy a usar en un script, voy a llamar a mi contraseña con “@option.db-pass@” y Rundeck pasará al script el valor ingresado cuando lance el trabajo. Guarda la opción y agrega un paso al trabajo en forma de script.
Esto es lo que voy a ingresar:
mysql --user=root <<_EOF_
SET PASSWORD FOR 'root'@localhost = PASSWORD('@option.db-pass@');
DELETE FROM mysql.user WHERE User='';
DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');
DROP DATABASE IF EXISTS test;
DELETE FROM mysql.db WHERE Db='test' OR Db='test\_%';
FLUSH PRIVILEGES;
_EOF_
Todos los pasos del script “mysql_secure_installatio
n” se incluyen aquí, observa la invocación de mi opción en la segunda línea.
Agrego un paso más para asegurarme de que el servicio MariaDB se inicie con el sistema:
Command: systemctl enable mariadb
Step Label: Añadir maria-db al inicio
Termino agregando un script que verificará que todo está bien cargando una página PHP a través de Curl. Si todo va bien, me dirá “TEST OK
“, de lo contrario, me dirá “TEST NOK
“:
echo "" > /var/www/html/test.php
test=$(curl http://127.0.0.1/test.php | grep "PHP Version")
if [$test != "" ]; then echo "TEST OK"; else echo "TEST NOK"; fi
Así que tenemos nuestros 6 pasos en el trabajo. El último paso obligatorio es indicar dónde se ejecuta este trabajo en la pestaña “Nodes”.

Nada complicado aquí, o se ejecuta localmente, o en nodos. Sin embargo, cuando hagas clic en “Dispatch to Nodes“, se mostrarán varias opciones:
Node filter
: permite definir un filtro para aplicar este trabajo a uno o más nodos. En mi ejemplo, se aplicarán a los servidores Debian, así que pongo osName: Debian y hago clic en “Search“. Este parámetro se puede sobrescribir para ejecutarlo solo en un nodo en el momento de la ejecución.Exclude filter
: si quieres excluir algunos nodos que aparecen de todas formas con tu filtro anterior.Show Excluded Nodes
: si deseas que los nodos excluidos se muestren en la página del trabajo.Matched Nodes
: los nodos que cumplen con el filtro establecido al principio. Normalmente, aquí encontrarás tu servidor.Editable filter
: si quieres ejecutar siempre en el o los nodos declarados a través de tu filtro, puedes dejarlo en No. Sin embargo, si tu trabajo se va a ejecutar a veces en un nodo y otras veces en varios nodos, te recomiendo poner Sí.Thread Count
: si hay varios nodos, el número de tareas paralelas.Rank Attribute
: si hay varios nodos, el orden en el que se ejecutará el trabajo. Por defecto, es el nombre de los nodos en orden alfabético.Rank Order
: el orden de clasificación (A-Z o Z-A por ejemplo).If a node fails
: describe cómo debe comportarse el trabajo si falla un nodo. O bien el trabajo se detiene inmediatamente, incluso si quedan nodos por procesar, o bien continúa en los otros nodos. Elijo que continúe.If node set empty
: qué hacer si la lista de nodos definida está vacía.Node selection
: si los destinos deben definirse manualmente o si la selección se realiza por defecto.Orchestrator
: permite agregar varias opciones sobre cómo se tratará el trabajo.
Una vez completadas las opciones deseadas, solo queda definir si el trabajo se puede programar, porque sí, es posible programar los trabajos directamente para que se ejecuten en una fecha y hora determinadas, y si se puede ejecutar. Esta última opción es práctica si eres varios y tu trabajo no está completo. Así podrás guardarlo sin miedo a que uno de tus colegas lo ejecute.
En este punto, puedes hacer clic en “Create” para crear tu trabajo. La pestaña “Notification” te permite recibir alertas por correo electrónico en caso de fallo, por ejemplo, y la pestaña “Other” contiene otras opciones, como el nivel de registro. Puedes dejar los valores predeterminados, pero te sugiero que veas qué se puede hacer.
Aquí tienes mi trabajo listo para ser ejecutado. ¡Solo queda probarlo! Cuando termines de crearlo, puedes lanzarlo directamente desde la pantalla en la que estás:

Aquí debo ingresar la contraseña de root para MariaDB (mi opción) y puedo, si lo deseo, cambiar el o los nodos de destino. Voy a ingresar una contraseña y lanzar el trabajo para verificar que todo va bien.
Una vez que se inicia, puedes seguirlo desplegando los diferentes pasos. ¡Incluso podrás tener la salida de la terminal del servidor remoto, útil para depurar!
Por ejemplo, tengo un error:
Actualización de la lista y los paquetes OK
Instalación de los paquetes del stack OK
Reinicio y verificación de Apache OK
Seguridad de Maria-DB OK
Añadir Maria-DB al inicio OK
Verificación de la pila Failed
Desplegando este paso, esto es lo que me devuelve:
/tmp/4-7-srv-dev-dispatch-script.tmp.sh: ligne 2: curl : commande introuvable
/tmp/4-7-srv-dev-dispatch-script.tmp.sh: ligne 4: erreur de syntaxe : fin de fichier prématurée
Failed: NonZeroResultCode: Remote command failed with exit status 2
Sí, ¡debería haber verificado que curl estuviera instalado antes de lanzar el trabajo! Afortunadamente, había tomado una instantánea para la demostración… (¡lo que demuestra que este artículo no tiene red!)
Entonces, hago clic en el menú junto al nombre de mi trabajo y en “Edit this Job“:

Vuelvo a la interfaz de edición del trabajo, voy a la pestaña “Workflow” y edito el paso número 2 agregando curl:
Command: apt-get install apache2 mariadb-server php php-cli libapache2-mod-php php-mysql curl -y
Step Label: Instalación de paquetes de pila
Guardo y vuelvo a lanzar el trabajo (habiendo restaurado mi instantánea, por supuesto…).
Actualización de la lista y los paquetes OK
Instalación de los paquetes del stack OK
Reinicio y verificación de Apache OK
Seguridad de Maria-DB OK
Añadir Maria-DB al inicio OK
Verificación de la pila OK
¡Mucho mejor! ¡Mi servidor LAMP se ha desplegado! Ahora solo tengo que agregar varios nodos y podré hacerlo sobre la marcha en varios servidores.
Conclusión
¡Este primer tutorial sobre la instalación y el uso de Rundeck llega a su fin! No dudes en compartir tus comentarios.
¿Qué te parece?
Es bueno conocer tu opinión. Deja un comentario.