SshClient
El componente SshClient es una herramienta diseñada para automatizar tareas en servidores remotos. Te permite conectarte de forma segura a tus máquinas (servidores) y ejecutar comandos específicos, como listar archivos, gestionar servicios o revisar registros, sin necesidad de entrar manualmente en una terminal.
En el contexto de Nappai, este componente actúa como un “puente” que permite a tus flujos de automatización interactuar directamente con la infraestructura de tus servidores de manera controlada y segura.
¿Cómo funciona?
Internamente, el componente utiliza el protocolo SSH (Secure Shell) para establecer una conexión cifrada y confiable con un servidor remoto. El proceso sigue estos pasos simples:
- Conexión Segura: Utiliza una credencial preconfigurada (que incluye tu usuario y contraseña o claves de seguridad) para establecer un “túnel” seguro hacia el servidor de destino.
- Ejecución: Una vez dentro del servidor, envía el comando que has especificado (por ejemplo,
ls -lodocker ps). - Respuesta: Recibe la respuesta del servidor. El componente captura lo que el servidor devuelve (como una lista de archivos) y te lo entrega en un formato fácil de leer.
Es importante entender que este componente no almacena datos permanentemente, sino que realiza una acción inmediata y te devuelve el resultado en ese momento.
Conexión y Credenciales
Este componente requiere configurar previamente una credencial en el panel de Nappai para poder interactuar con el servidor remoto de forma segura. No es necesario ingresar la contraseña o las claves directamente en cada nodo; en su lugar, sigues estos pasos:
- Dirígete a la sección de Credenciales en tu panel de Nappai.
- Crea una nueva credencial del tipo SSH Client. Deberás guardar los siguientes datos:
- SSH Hostname: La dirección IP o nombre del servidor.
- SSH Port: El puerto (por defecto suele ser 22).
- SSH Username: Tu nombre de usuario en el servidor.
- Private Key / Password: Tu clave privada o contraseña para la autenticación.
- En tu flujo de trabajo, abre el componente SshClient y, en el campo de entrada Credential, selecciona la credencial que acabas de crear.
Entradas
Este componente cuenta con un modo especial llamado Mapping Mode (Modo de Mapeo). Cuando activas este modo mediante el interruptor, se habilita una entrada adicional llamada “Mapping Data” y cada campo de entrada te ofrece tres formas diferentes de proporcionar datos:
- Fixed (Fijo): Escribes el valor directamente en el campo.
- Mapped (Mapeado): Conectas la salida de otro componente para usar su resultado como valor.
- Javascript: Escribes código Javascript para calcular el valor dinámicamente.
Esta flexibilidad te permite crear flujos de trabajo más dinámicos y conectados.
Campos de Entrada
Los siguientes campos están disponibles para configurar este componente. Cada campo puede estar visible en diferentes operaciones:
- Command: El comando de shell que deseas ejecutar en el servidor remoto (por ejemplo,
ls -lha,df -h,cat /var/log/syslog).
- Visible en: Ejecutar
- Output Format: Elige cómo deseas que se presente la salida del comando:
- Plain Text: Muestra el texto tal cual, manteniendo los saltos de línea. Ideal para logs o listas simples.
- Markdown: Convierte tablas en formato Markdown (con líneas y barras) para facilitar la lectura visual. Ideal para datos estructurados.
- Auto: Detecta automáticamente si la salida es una tabla y usa el formato adecuado.
- Visible en: Ejecutar
- Timeout (seconds): Es el tiempo máximo (en segundos) que el sistema esperará a que el comando termine. Por defecto, el límite es de 60 segundos. Si el comando tarda más, se cancelará automáticamente para evitar bloqueos. Ideal para evitar que el flujo se quede “colgado” en comandos lentos.
- Visible en: Ejecutar
- Operation: Selecciona el tipo de acción a realizar. Actualmente, solo soporta la ejecución de comandos en servidores remotos.
- Visible en: Ejecutar
Salidas
Al finalizar la ejecución, el componente te proporcioná los siguientes resultados:
- Message: Contiene la salida estándar del comando ejecutado. Por ejemplo, si ejecutas
ls -l, aquí recibirás la lista de archivos. Si hay un error, esta salida podría contener el mensaje de error. Este resultado puede ser mapeado a otros nodos para procesar la información.
Ejemplo de Respuesta JSON
A continuación, se muestra un ejemplo de cómo se ve la salida (el contenido de Message) cuando se ejecuta un comando para listar el espacio en disco (df -h):
json
{
“message”: “Filesystem Size Used Avail Use% Mounted on\n/dev/sda1 50G 20G 30G 40% /”,
“status”: “success”
}
Conectividad
Este componente suele conectarse con nodos posteriores que necesitan procesar texto o datos de configuración. Por ejemplo:
- Con nodos de Texto o Lógica: Para analizar si el comando se ejecutó correctamente o extraer información específica del resultado.
- Con nodos de Notificación: Para enviar por correo o Slack los resultados de un comando (como “Espacio en disco lleno”).
- Con otros nodos de Automatización: Para encadenar comandos (primero detener un servicio, luego reiniciarlo).
También es común que este nodo sea la “puerta de entrada” a la infraestructura remota, conectándose a servidores que no son accesibles directamente desde internet, sino solo desde el entorno de Nappai.
Ejemplo de Uso
Escenario: Verificar el espacio en disco de un servidor web.
- Agrega el componente SshClient a tu flujo.
- Selecciona tu credencial SSH configurada.
- En el campo Command, escribe:
df -h. - En Output Format, elige Markdown para ver los datos en tabla.
- Conecta la salida Message a un nodo de “Código” o “Texto” para leer el resultado.
- Si el espacio es bajo, el flujo puede enviar una alerta de error.
Consejos y Mejores Prácticas
- Usa el modo “Auto”: En la mayoría de los casos, la opción Auto del campo Output Format es la mejor elección porque adapta la presentación según la naturaleza de los datos.
- Gestiona el Tiempo de Espera: Si ejecutas comandos que pueden tardar mucho (como copias de archivos grandes), aumenta el valor en Timeout (seconds) para evitar que la conexión se cierre prematuramente.
- Comandos de Lectura: Este componente es ideal para comandos que devuelven información (
ls,cat,docker ps). No es adecuado para comandos que esperan interacción del usuario (comosudopidiendo contraseña en tiempo real), ya que el flujo se bloquearía esperando esa respuesta.
Consideraciones de Seguridad
- Uso de Credenciales Seguras: Nunca compartas las credenciales SSH con otros usuarios. Asegúrate de almacenarlas en la sección segura de Credenciales de Nappai.
- Privilegios de Usuario: Ejecuta comandos con la cuenta de usuario con menos privilegios posible para limitar riesgos si la automatización es comprometida.
- Limitación de Tiempo: Mantén un valor de Timeout razonable (no excesivo) para evitar que un comando erróneo o un servicio colgado consuma recursos del sistema indefinidamente.