RUNDECK – Descubre la facilidad y el poder de automatizar

¿Qué es Rundeck?

Rundeck es una herramienta de automatización de operaciones que se utiliza para coordinar y ejecutar tareas en una infraestructura de TI. Fue creada por la empresa Rundeck, Inc. en 2010 y se distribuye bajo una licencia de software libre de Apache.

Rundeck proporciona una interfaz web fácil de usar para administrar tareas y trabajos, lo que permite a los usuarios programar y automatizar tareas en diferentes entornos, incluidos sistemas operativos, bases de datos, nubes públicas y privadas, y aplicaciones.

Además, Rundeck ofrece una amplia variedad de funciones, como la gestión de permisos y roles de usuario, la ejecución remota de comandos, la integración con herramientas de terceros, la gestión de flujos de trabajo complejos, la monitorización y el registro de actividades, entre otros. Todo esto hace que Rundeck sea una herramienta muy útil para simplificar la administración de sistemas y mejorar la eficiencia en el manejo de operaciones.

Ejemplos de uso de Rundeck

Rundeck se utiliza para coordinar y automatizar tareas de operaciones en diferentes entornos de TI, lo que puede incluir:

  1. Gestión de infraestructuras de sistemas: Rundeck permite gestionar la infraestructura de TI de manera centralizada, coordinando y automatizando tareas en diferentes sistemas operativos, servidores, nubes, bases de datos, etc.
  2. Automatización de procesos de negocio: Rundeck se puede utilizar para automatizar procesos de negocio que implican varias etapas o tareas que deben realizarse de manera secuencial.
  3. Orquestación de flujos de trabajo: Rundeck permite definir flujos de trabajo complejos que involucran múltiples tareas y dependencias entre ellas, lo que permite automatizar la ejecución de tareas de manera secuencial y coordinada.
  4. Operaciones de DevOps: Rundeck es una herramienta útil para implementar prácticas de DevOps, ya que permite integrar herramientas de desarrollo y operaciones y automatizar tareas que antes se realizaban manualmente.
  5. Gestión de incidencias: Rundeck puede utilizarse para coordinar la resolución de incidencias en los sistemas de TI, proporcionando una plataforma para programar y ejecutar tareas de reparación y mantenimiento.

En general, Rundeck se utiliza para simplificar la administración de sistemas y mejorar la eficiencia en el manejo de operaciones, lo que puede ahorrar tiempo y reducir errores al automatizar tareas y flujos de trabajo.

Características de Rundeck

  1. Interfaz web: Rundeck proporciona una interfaz web fácil de usar que permite programar y ejecutar tareas de manera centralizada.
  2. Automatización de tareas: Rundeck permite automatizar tareas de operaciones en diferentes entornos, incluyendo sistemas operativos, bases de datos, nubes públicas y privadas, y aplicaciones.
  3. Integración con herramientas de terceros: Rundeck se integra con herramientas de terceros como Jenkins, Ansible, Puppet, y SaltStack, entre otras, lo que permite extender su funcionalidad y automatizar tareas de manera más eficiente.
  4. Gestión de permisos y roles de usuario: Rundeck ofrece una gestión de permisos y roles de usuario que permite definir quién tiene acceso a qué recursos y acciones.
  5. Ejecución remota de comandos: Rundeck permite ejecutar comandos en sistemas remotos de manera segura y controlada.
  6. Monitorización y registro de actividades: Rundeck ofrece la capacidad de monitorizar y registrar las actividades realizadas en la plataforma, lo que permite auditar y depurar problemas.
  7. Gestión de flujos de trabajo complejos: Rundeck permite definir flujos de trabajo complejos que involucran múltiples tareas y dependencias entre ellas.
  8. Integración con LDAP y Active Directory: Rundeck se integra con sistemas de autenticación como LDAP y Active Directory, lo que permite la gestión centralizada de usuarios y permisos.
  9. Escalabilidad y alta disponibilidad: Rundeck se puede configurar para funcionar en entornos de alta disponibilidad y escalabilidad para satisfacer las necesidades de grandes organizaciones.

Desventajas de Rundeck

  1. Curva de aprendizaje: Rundeck puede tener una curva de aprendizaje pronunciada para aquellos que no estén familiarizados con la automatización de tareas o la programación.
  2. Configuración inicial: La configuración inicial de Rundeck puede requerir conocimientos avanzados de sistemas y redes.
  3. Mantenimiento: La administración y mantenimiento de Rundeck puede requerir conocimientos técnicos avanzados y experiencia en el mantenimiento de sistemas.
  4. Dependencia de terceros: Rundeck se integra con herramientas de terceros, lo que puede crear una dependencia en dichas herramientas.
  5. Costo: Rundeck tiene un modelo de negocio basado en suscripción para ciertas características y funcionalidades adicionales, lo que puede resultar costoso para algunas organizaciones.

¿Cómo funciona Rundeck?

A continuación, se describe cómo funciona Rundeck en términos generales:

  • Definición de trabajos: Los trabajos son tareas individuales o flujos de trabajo que se deben automatizar. En Rundeck, los trabajos se definen utilizando un lenguaje de definición de trabajos específico, que permite especificar los comandos a ejecutar, los parámetros necesarios y las opciones de configuración.
  • Programación de trabajos: Una vez que los trabajos han sido definidos, se pueden programar para que se ejecuten en un momento específico o en respuesta a un evento específico.
  • Ejecución de trabajos: Cuando se programa un trabajo para ejecutarse, Rundeck se encarga de enviar los comandos necesarios a los sistemas correspondientes y de ejecutar el trabajo de manera segura y controlada.
  • Monitorización y registro: Rundeck monitoriza y registra las actividades realizadas en la plataforma, lo que permite auditar y depurar problemas.
  • Integración con herramientas de terceros: Rundeck se integra con herramientas de terceros como Jenkins, Ansible, Puppet, y SaltStack, entre otras, lo que permite extender su funcionalidad y automatizar tareas de manera más eficiente.

¿Cómo se instala Rundeck?

Rundeck se puede instalar en diferentes sistemas operativos, incluyendo Linux, macOS y Windows. A continuación, se describen los pasos generales para instalar Rundeck en Linux:

  1. Descarga de Rundeck: Descargar la última versión de Rundeck desde la página oficial de descarga: https://docs.rundeck.com/docs/administration/install/linux-rpm.html#installing-rundeck

Ejecutamos el siguiente script:

curl https://raw.githubusercontent.com/rundeck/packaging/main/scripts/rpm-setup.sh 2> /dev/null | sudo bash -s rundeckpro

Observaremos que ha creado el siguiente repositorio de yum:

[root@localhost]# cat /etc/yum.repos.d/rundeck.repo
[rundeckpro]
name=rundeckpro
baseurl=https://packages.rundeck.com/pagerduty/rundeckpro/rpm_any/rpm_any/$basearch
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packages.rundeck.com/pagerduty/rundeckpro/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
[root@localhost]#
  • Instalación de Java: Rundeck requiere Java para funcionar, por lo que es necesario instalar una versión compatible de Java si no se ha hecho previamente.
  • Instalación de Rundeck: Finalmente, se puede instalar Rundeck utilizando el siguiente comando en la terminal:
sudo yum install java rundeckpro-enterprise

También podemos descargar el paquete RPM desde la URL de descargas:

https://www.rundeck.com/downloads
https://packages.rundeck.com/pagerduty/rundeck?filter=rpms

Errores encontrados durante la intalación:

[root@rhel9casa yum.repos.d]# yum install rundeck
Updating Subscription Management repositories.
pagerduty_rundeck                                                                                                                                 0.0  B/s |   0  B     00:04
Errors during downloading metadata for repository 'pagerduty_rundeck':
  - Curl error (60): SSL peer certificate or SSH remote key was not OK for https://packagecloud.io/pagerduty/rundeck/el/9/x86_64/repodata/repomd.xml [SSL certificate problem: unable to get local issuer certificate]
Error: Failed to download metadata for repo 'pagerduty_rundeck': Cannot download repomd.xml: Cannot download repodata/repomd.xml: All mirrors were tried
[root@rhel9casa yum.repos.d]#

Solución:

[root@rhel9casa yum.repos.d]# subscription-manager refresh
1 local certificate has been deleted.
All local data refreshed
[root@rhel9casa yum.repos.d]#

Esta vez ya funciona correctamente la ejecución del comando yum install rundeck.

  • Arrancamos el servicio rundeckd:
[root@rhel9casa ~]# systemctl start rundeckd
[root@rhel9casa ~]# systemctl status rundeckd
● rundeckd.service - SYSV: rundeckd, providing rundeckd
     Loaded: loaded (/etc/rc.d/init.d/rundeckd; generated)
     Active: active (running) since Mon 2023-02-27 09:04:10 CET; 3s ago
       Docs: man:systemd-sysv-generator(8)
    Process: 47108 ExecStart=/etc/rc.d/init.d/rundeckd start (code=exited, status=0/SUCCESS)
   Main PID: 47116 (runuser)
      Tasks: 0 (limit: 16735)
     Memory: 1.2M
        CPU: 46ms
     CGroup: /system.slice/rundeckd.service
             ‣ 47116 runuser -s /bin/bash -l rundeck -c "java -Drundeck.jaaslogin=true            -Djava.security.auth.login.config=/etc/rundeck/jaas-loginmodule.conf           >

Feb 27 09:04:10 rhel9casa systemd[1]: Starting SYSV: rundeckd, providing rundeckd...
Feb 27 09:04:10 rhel9casa rundeckd[47108]: Starting rundeckd: [  OK  ]
Feb 27 09:04:10 rhel9casa systemd[1]: Started SYSV: rundeckd, providing rundeckd.
[root@rhel9casa ~]#
  • Configuración de Rundeck: Una vez instalado Rundeck, es necesario configurarlo para que se pueda acceder a la interfaz web y realizar otras tareas de configuración. La configuración se puede realizar a través de archivos de configuración o utilizando la interfaz web de Rundeck.

Permisos de sudo para Rundeck

Como podemos observar, la aplicación Rundeck se está ejecutando con el usuario rundeck:

[root@rhel9casa ~]# ps -ef |grep rundeck
rundeck    52279       1  0 08:09 ?        00:00:00 /usr/lib/systemd/systemd --user
rundeck    52282   52279  0 08:09 ?        00:00:00 (sd-pam)
root       54266       1  0 08:38 ?        00:00:00 runuser -s /bin/bash -l rundeck -c java -Drundeck.jaaslogin=true            -Djava.security.auth.login.config=/etc/rundeck/jaas-loginmodule.conf            -Dloginmodule.name=RDpropertyfilelogin            -Drdeck.config=/etc/rundeck            -Drundeck.server.configDir=/etc/rundeck            -Dserver.datastore.path=/var/lib/rundeck/data/rundeck            -Drundeck.server.serverDir=/var/lib/rundeck            -Drdeck.projects=/var/lib/rundeck/projects            -Dlog4j.configurationFile=/etc/rundeck/log4j2.properties            -Dlogging.config=file:/etc/rundeck/log4j2.properties            -Drdeck.runlogs=/var/lib/rundeck/logs            -Drundeck.server.logDir=/var/lib/rundeck/logs            -Drundeck.config.location=/etc/rundeck/rundeck-config.properties            -Djava.io.tmpdir=/tmp/rundeck            -Drundeck.server.workDir=/tmp/rundeck            -Dserver.http.port=4440            -Drdeck.base=/var/lib/rundeck  -Xmx1024m -Xms256m -XX:MaxMetaspaceSize=256m -server  -jar /var/lib/rundeck/bootstrap/rundeck-4.11.0-20230313.war --skipinstall
rundeck    54272   54266 99 08:38 ?        00:05:11 java -Drundeck.jaaslogin=true -Djava.security.auth.login.config=/etc/rundeck/jaas-loginmodule.conf -Dloginmodule.name=RDpropertyfilelogin -Drdeck.config=/etc/rundeck -Drundeck.server.configDir=/etc/rundeck -Dserver.datastore.path=/var/lib/rundeck/data/rundeck -Drundeck.server.serverDir=/var/lib/rundeck -Drdeck.projects=/var/lib/rundeck/projects -Dlog4j.configurationFile=/etc/rundeck/log4j2.properties -Dlogging.config=file:/etc/rundeck/log4j2.properties -Drdeck.runlogs=/var/lib/rundeck/logs -Drundeck.server.logDir=/var/lib/rundeck/logs -Drundeck.config.location=/etc/rundeck/rundeck-config.properties -Djava.io.tmpdir=/tmp/rundeck -Drundeck.server.workDir=/tmp/rundeck -Dserver.http.port=4440 -Drdeck.base=/var/lib/rundeck -Xmx1024m -Xms256m -XX:MaxMetaspaceSize=256m -server -jar /var/lib/rundeck/bootstrap/rundeck-4.11.0-20230313.war --skipinstall
root       54694   45586  0 08:41 pts/0    00:00:00 grep --color=auto rundeck
[root@rhel9casa ~]# 

Si queremos ejecutar procesos con permisos de root, añadiremos el usuario rundeck al grupo wheel, que ya está configurado en sudo para poder lanzar procesos en el sistema como si fuera root:

gpasswd -a rundeck wheel

[root@rhel9casa ~]# grep wheel /etc/sudoers |grep -v "#"
 %wheel	ALL=(ALL)	NOPASSWD: ALL
[root@rhel9casa ~]#

Configuración de Rundeck

La configuración de Rundeck se puede realizar a través de archivos de configuración o utilizando la interfaz web de Rundeck. A continuación, se describen algunos de los aspectos principales que se pueden configurar en Rundeck:

  1. Configuración de usuarios y permisos: Rundeck permite configurar diferentes usuarios y permisos para acceder a la interfaz web y realizar diferentes acciones. Esto se puede hacer a través de la sección «Users» en la interfaz web de Rundeck, donde se pueden agregar nuevos usuarios y establecer sus permisos.
  2. Configuración de nodos: Los nodos son los sistemas o servidores que Rundeck administra. Se pueden agregar nodos a través de la interfaz web de Rundeck o a través de archivos de configuración en formato YAML o XML.
  3. Configuración de proyectos: Los proyectos en Rundeck permiten agrupar y organizar tareas y flujos de trabajo relacionados. La configuración de proyectos incluye aspectos como la definición de las tareas y flujos de trabajo, la configuración de notificaciones y la asignación de permisos a los usuarios.
  4. Configuración de opciones avanzadas: Rundeck permite configurar diversas opciones avanzadas, como la integración con sistemas de control de versiones, la configuración de plugins y extensiones, y la configuración de opciones de seguridad y cifrado.

El servicio rundeckd escucha por el puerto 4440 y podemos acceder a él vía WEB:

Rundeck login via WEB

La primera vez que accedemos al servicio lo haremos con las siguientes credenciales:

Usuario: admin

Contraseña: admin

Rundeck crear nuevo proyecto
RUNDECK - Descubre la facilidad y el poder de automatizar 12

A partir de aquí, ya podemos crear nuestro primer proyecto de automatización, especificando los comandos a ejecutar, horarios, nodos, usuarios, etc.

Rundeck proyecto de test

Definimos las características de este proyecto en cada uno de los componentes del menú lateral izquierdo:

Menu de rundeck para crear un nuevo proyecto

Definimos los nodos para este proyecto. Para la prueba, solamente usaremos el localhost:

Añadimos los nodos para un proyecto de Rundeck
Ejecutar un comando con rundeck
RUNDECK - Descubre la facilidad y el poder de automatizar 13

Si le damos al botón “Run on…”, podemos comprobar que ha ejecutado el comando indicado anteriormente:

[root@rhel9casa ~]# cat /tmp/df.txt
Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                 4.0M     0  4.0M   0% /dev
tmpfs                    1.4G   24M  1.3G   2% /dev/shm
tmpfs                    536M  8.3M  528M   2% /run
/dev/mapper/vg00-lvroot   20G   11G  9.0G  56% /
/dev/nvme0n1p1          1014M  475M  540M  47% /boot
/dev/loop1               315M  315M     0 100% /var/lib/snapd/snap/eclipse/66
/dev/loop0                64M   64M     0 100% /var/lib/snapd/snap/core20/1778
/dev/loop2                50M   50M     0 100% /var/lib/snapd/snap/snapd/17950
tmpfs                    268M  108K  268M   1% /run/user/1000
tmpfs                    268M   40K  268M   1% /run/user/6006
[root@rhel9casa ~]#

El ejemplo anterior ha servidor para ejecutar un comando en un nodo, aunque también lo podemos ejecutar masivamente pero, si queremos crear tareas programadas, tendremos que configurar un Job:

Crear un job en rundeck

Roles de usuarios

Los roles de usuario en Rundeck son utilizados para otorgar permisos y acceso a las distintas funcionalidades de la plataforma a los usuarios. A continuación se describen los roles de usuario que se pueden definir en Rundeck:

  • Administrador (admin): Este rol tiene acceso completo a todas las funcionalidades de la plataforma, incluyendo la creación y modificación de proyectos, usuarios, roles, nodos y flujos de trabajo.
  • Usuario (user): Este rol permite a los usuarios acceder y ejecutar flujos de trabajo en Rundeck. Sin embargo, no tienen permisos para modificar la configuración o estructura de la plataforma.
  • Administrador de aplicaciones (app_admin): El rol de administrador de la aplicación (app_admin) está diseñado para administrar el contenido de Rundeck de manera integral sin la capacidad de afectar los ajustes o configuraciones que afectarían las operaciones del sistema de Rundeck. Los usuarios con este rol están restringidos a áreas de Rundeck relacionadas con la ejecución de la automatización con Rundeck.
    • Acceso mínimo a los detalles de la licencia
    • Sin acceso al administrador de clústeres
    • Acceso completo a proyectos
    • Acceso completo permitido a los usuarios
    • Acceso completo a los recorridos del sistema
    • Acceso completo a los calendarios del sistema
    • Acceso completo al pronóstico del cronograma del sistema
    • Acceso completo para administrar las ACL del sistema
    • Acceso completo al almacenamiento de claves

Creación de un nuevo usuario de Rundeck

Si tienes la versión «Enterprise» podrás crear usuarios desde la consola de administración WEB de Rundeck haciendo clic en la rueda «dentada» y «Manage Users». Pero si tienes la versión de la comunidad, tendrás que crear los nuevos usuarios a través de la línea de comandos, tal y como explican en la documentación oficial de Rundeck.

Para este tutorial, tengo instalada la versión de la comunidad, así que voy a crear un usuario llamado «oper» por la línea de comandos:

  • Creo el usuario
[root@rhel9casa ~]# java -jar /var/lib/rundeck/bootstrap/rundeck-4.11.0-20230313.war --encryptpwd Jetty
Required values are marked with: * 
Username (Optional, but necessary for Crypt encoding):
oper
*Value To Encrypt (The text you want to encrypt):
oper

==ENCRYPTED OUTPUT==
bcrypt: BCRYPT:$2a$10$OyndCjM/yWRHveKeO1U2l.zjtIZF5vCbRr8bc9kSzZ02SXt8bc9h.
obfuscate: OBF:1xmk1v9m1v901xmq
md5: MD5:fd154ffe305c26b5004231ff709bd1b8
crypt: CRYPT:opEnPnaMpKBoQ
[root@rhel9casa ~]# 

Jetty se corresponde al método de encriptación. No confundir con el usuario. El usuario y la contraseña te las pregunta después. Como puedes ver, yo he creado el usuario «oper» con contraseña «oper» para esta prueba.

Este usuario no será administrador de la plataforma (Rundeck), así que solamente le pong el rol de «user».

  • A continuación, editamos el fichero /etc/rundeck/realm.properties para añadir el usuario y su contraseña encriptada. La línea añadida es:
oper: BCRYPT:$2a$10$OyndCjM/yWRHveKeO1U2l.zjtIZF5vCbRr8bc9kSzZ02SXt8bc9h.,user,app_admin
  • Para aplicar el cambio hay que reiniciar Rundeck
systemctl restart rundeckd

Y ya podremos entrar con el usuario oper:

Login con el usuario "oper" en Rundeck

Si queremos modificar la contraseña del usuario, volveremos a lanzar la misma línea y escribiremos una contraseña nueva cuando nos la pregunte. Luego, reiniciaremos el servicio rundeckd de nuevo.

Asignación de permisos ACL

Supongamos que tenemos un proyecto llamado «Operating-System-Linux» y queremos que el usuario «oper» tenga permisos sobre el mismo. Para ello, editaremos el fichero /etc/rundeck/admin.aclpolicy y asignaremos permisos ACL para que pueda acceder a ese proyecto en concreto y para leer y ejecutar sus jobs:

description: Project Operating-System-Linux permissions
context:
  application: 'rundeck'
for:
  resource:
  - equals:
      kind: project
    allow: [read]
  - equals:
      kind: system
    allow: [read]
  project:
  - match:
      name: 'Operating-System-Linux'
    allow: '*'
  job:
    - allow: [read,run,runAs,kill,killAs]
  node:
    - allow: [read,run]
by:
  username: oper

---

description: Jobs of project Operating-System-Linux
context:
  project: Operating-System-Linux
for:
  job:
  - allow: [read,run]
by:
  username: oper
image 2

La creación de los Jobs se ha hecho con el usuario admin pero el usuario oper puede verlos y ejecutarlos (no modificarlos).

Rundeck - Ver jobs

Te puede interesar

Automatización de tareas con Ansible

COMPÁRTEME

Deja un comentario