Script de Despliegue de EndPoint de Pandora FMS

Introducción

Instalador de EndPoint para Linux. Siempre instala desde un tarball (nunca desde un RPM), valida que el tarball descargado sea un EndPoint real de Pandora FMS y configura el agente para que reporte a un Servidor de Pandora FMS.

  • Script: ../pandora_agent_deploy.sh
  • Alcance: Descarga desde packages.pandorafms.com.
  • SO Soportados: RHEL/Fedora (EL7/8/9/10), SUSE/OpenSUSE, Debian/Ubuntu.
  • Arquitecturas soportadas: x86_64 (agentes binarios). x86, armv7l, aarch64 cambian automáticamente a PERL_SOURCES (compilación desde el código fuente). Otras arquitecturas abortan la instalación.

Inicio rápido

Instalación mínima (agente de GO, canal estable):

export PANDORA_SERVER_IP='10.0.0.1'
curl -sSL https://pfms.me/agent-deploy | bash

Totalmente automatizado (sin interacciones):

export PANDORA_SERVER_IP='10.0.0.1' \
       PANDORA_AGENT_PACKAGE=GO \
       PANDORA_AGENT_RELEASE=STABLE \
       PANDORA_SKIP_CONFIRMATION=1
curl -sSL https://pfms.me/agent-deploy | bash

Variables de entorno

Requeridas

Variable Descripción
PANDORA_SERVER_IP Requerido. Dirección IP o nombre de host del Servidor de Pandora FMS al que reportará el agente. El script se aborta si no se configura esto.

Selección de paquete

Variable Por defecto Valores aceptados
PANDORA_AGENT_PACKAGE
(A través de
PANDORA_AGENT_PACKAGE_TYPE)
Selecciona qué tarball
del agente instalar.
Ver Selección de paquete.
GO GO,
PERL,
PERL_SOURCES,
o una URL
directa de http(s)://
PANDORA_AGENT_PACKAGE_TYPE
Tipo de respaldo
usado solo cuando
PANDORA_AGENT_PACKAGE
no está definido.
Útil cuando se desea
un tipo por defecto pero
aún se permite a los llamadores
sobreescribirlo con una URL directa.
GO GO,
PERL,
PERL_SOURCES
PANDORA_AGENT_RELEASE
Canal de lanzamiento.
STABLE descarga desde …/latest,
BETA
descarga desde …/nightlies.
Ver Canales de lanzamiento.
STABLE STABLE,
BETA (no distingue mayúsculas/minúsculas)
PANDORA_SKIP_CONFIRMATION
Cuando se establece en 1, omite
los avisos de confirmación interactivos. Úselo en CICD
y tuberías automatizadas.
Ver Confirmación.
unset 1 / unset

Configuración del agente (opcional)

Todos estos se inyectan en /etc/pandora/pandora_agent.conf después de la instalación mediante sed. Si una variable no está configurada, la línea de configuración correspondiente se deja intacta.

Variable Clave de config. afectada Efecto
PANDORA_REMOTE_CONFIG remote_config Habilita/deshabilita la configuración remota
desde el servidor.
PANDORA_GROUP group Establece el grupo del agente.
PANDORA_DEBUG debug Habilita el modo de depuración
(registro detallado).
PANDORA_AGENT_NAME agent_name Establece el nombre del agente
(descomenta la línea).
PANDORA_AGENT_ALIAS agent_alias Establece el alias del agente
(descomenta la línea).
PANDORA_SECONDARY_GROUPS secondary_groups Establece grupos secundarios
(descomenta la línea).
PANDORA_AGENT_SSL server_ssl Habilita SSL para la conexión tentacle
(descomenta la línea).
TIMEZONE enlace simbólico /etc/localtime Establece la zona horaria del sistema
(p. ej. Europe/Madrid).

Comportamiento del SO

Variable Por defecto Valores aceptados Descripción
RHEL_CHECK_SUBSCRIPTION 1 0 / 1 Cuando es 1, en RHEL
(no Oracle Linux)
el script verifica el estado de subscription-manager
antes de instalar.
Establézcalo en 0 para
omitir la verificación de suscripción.
PANDORA_SKIP_DEPENDENCIES unset 1 / unset Cuando se establece en 1,
omite toda la instalación de dependencias del SO
(perl, libnsl, etc.).
Úselo cuando preinstale
las dependencias usted mismo.

Selección de paquete

PANDORA_AGENT_PACKAGE acepta dos tipos de valores: un selector de tipo o una URL directa.

Selectores de tipo

Valor Tarball descargado (estable) Descripción
GO pandorafms_one_agent_linux-latest.go.tar.gz Agente de Go (binario).
Por defecto.
PERL pandorafms_one_agent_linux-latest.tar.gz Agente de Perl
(tarball binario precompilado).
PERL_SOURCES pandorafms_one_agent_linux-latest.src.tar.gz Agente de Perl desde código fuente
(requiere Perl en la máquina destino).
  • El selector no distingue entre mayúsculas y minúsculas (go, Go, GO funcionan todos).
  • PERL_SOURCES también acepta los alias PERLSOURCES, PERL_SRC, PERLSRC.

URL directa

Si el valor comienza con http:// o https://, se utiliza tal cual y se omite la lógica de versión predeterminada. Se imprime una advertencia amarilla:

PANDORA_AGENT_PACKAGE is a direct URL,
default version logic (GO/PERL/PERL_SOURCES) is skipped.

El tarball aún se valida antes de la instalación (ver Validación de tarball), por lo que una URL incorrecta falla rápidamente en lugar de instalar basura.

export PANDORA_SERVER_IP='10.0.0.1' \ 
PANDORA_AGENT_PACKAGE='https://my-ci.example.com/builds/agent-1234.tar.gz'

Valor inválido

Si PANDORA_AGENT_PACKAGE se establece en algo que no es ni un selector de tipo ni una URL, el script se aborta con un error en rojo.

Anulación de arquitectura

Los agentes binarios (GO, PERL) solo funcionan en x86_64. Si el script detecta x86, armv7l, o aarch64, automáticamente anula el tipo de paquete a PERL_SOURCES (compilación desde el código fuente) e imprime una advertencia amarilla:

Arch: armv7l is not supported by the binary agent,
switching to PERL_SOURCES (source build).
Overriding PANDORA_AGENT_PACKAGE from GO to
PERL_SOURCES for arch armv7l.

Esta anulación NO se aplica si:

  • El usuario ya seleccionó PERL_SOURCES (no se necesita cambio).
  • El usuario proporcionó una URL directa (se respeta, pero se imprime una advertencia amarilla recordando que la arquitectura requiere una compilación desde el código fuente).

Canales de lanzamiento

PANDORA_AGENT_RELEASE elige entre compilaciones estables y beta (nightly).

Valor URL Base
STABLE
Sufijo del tarball
latest
https://packages.pandorafms.com/pandorafms/latest
BETA
Sufijo del tarball
nightlies
https://packages.pandorafms.com/pandorafms/nightlies

Por lo tanto, con PANDORA_AGENT_RELEASE=BETA PANDORA_AGENT_PACKAGE=GO, el tarball descargado es:

https://packages.pandorafms.com/pandorafms/nightlies/pandorafms_one_agent_linux-nightlies.go.tar.gz.

El valor se normaliza a mayúsculas, por lo que beta, Beta, BETA son todos aceptados. Un valor inválido se aborta con un error en rojo.

Advertencia de BETA

Cuando PANDORA_AGENT_RELEASE=BETA, se imprime una advertencia amarilla mostrando la URL de las nightlies.
Dependiendo de PANDORA_SKIP_CONFIRMATION, el script pide confirmación o continúa automáticamente (ver Confirmación).

Confirmación

La función confirm() le pide al usuario que escriba Y o y para continuar. Lee de /dev/tty por lo que funciona incluso cuando el script es canalizado (curl … | bash).

PANDORA_SKIP_CONFIRMATION PANDORA_AGENT_RELEASE Comportamiento
unset / distinto de 1 BETA Imprime advertencia amarilla + pregunta Y/y para continuar. Aborta con cualquier otra respuesta.
1 BETA Imprime advertencia amarilla solamente, continúa sin preguntar.
cualquiera STABLE Sin aviso de confirmación (estable no lo requiere).

CICD / uso automatizado: siempre establezca PANDORA_SKIP_CONFIRMATION=1 para que el script nunca se bloquee esperando una entrada.

export PANDORA_SERVER_IP='10.0.0.1' \
       PANDORA_AGENT_RELEASE=BETA \
       PANDORA_SKIP_CONFIRMATION=1

Validación de tarball

Después de la descarga, el script valida el tarball antes de instalarlo. Dos capas:

  1. Estructuraltar tzf enumera los contenidos y verifica que existan estas entradas:
    • unix/pandora_agent_installer
    • unix/pandora_agent
    • unix/tentacle_client
  2. Huella digital — extrae unix/pandora_agent_installer a STDOUT y comprueba si existe la cadena Pandora FMS Agent Installer for Unix.

Si alguna de las capas falla, el script imprime un error rojo mostrando la URL descargada, limpia el directorio temporal y sale. Esto evita instalar un tarball que no sea un agente de Pandora FMS (p. ej., una URL incorrecta que apunte a un paquete de consola o servidor).

Flujo de instalación

  1. Verifica que PANDORA_SERVER_IP esté configurada.
  2. Verifica que grep, sed, y curl estén disponibles.
  3. Detecta el SO desde /etc/os-release (ID_LIKE / ID). Aborta si no es RHEL/Fedora/SUSE/Debian.
  4. Verifica permisos de root.
  5. Verifica conectividad a packages.pandorafms.com.
  6. Verifica la arquitectura. x86_64 continúa con el paquete seleccionado. x86, armv7l, aarch64 cambian automáticamente a PERL_SOURCES (los agentes binarios no se ejecutarán en estas arquitecturas). Otras arquitecturas abortan.
  7. Resuelve PANDORA_AGENT_PACKAGE (selector de tipo o URL directa) y PANDORA_AGENT_RELEASE (estable/beta). BETA puede solicitar confirmación.
  8. Crea el espacio de trabajo temporal $HOME/pandora_deploy_tmp.
  9. Instala dependencias (se omite si PANDORA_SKIP_DEPENDENCIES=1). Las dependencias varían según el tipo de agente:
    • GO: perl tar (+ procps en Debian).
    • PERL: perl perl-Sys-Syslog unzip tar (+ RHEL: libnsl/libxcrypt, SUSE: ninguna, Debian: procps).
    • PERL_SOURCES: conjunto completo que incluye perl-Scalar-List-Utils, perl-IO-Socket-SSL,
      perl-Digest-MD5, perl-threads, perl-Thread-Semaphore,
      libnsl (RHEL); perl-YAML-Tiny,
      perl-IO-Socket-SSL, libnsl3 (SUSE); libsys-syslog-perl,
      libyaml-tiny-perl, libio-socket-ssl-perl, libscalar-list-utils-perl (Debian).
  10. Descarga el tarball con curl.
  11. Valida el tarball (estructural + huella digital).
  12. Instala mediante install_tarball:
    tar xvzf + cd unix && ./pandora_agent_installer –install.
  13. Configura /etc/pandora/pandora_agent.conf con las variables PANDORA_*.
  14. Compatibilidad Docker/systemd: si systemctl status falla, copia pandora_agent_daemon a /etc/init.d/ y lo reinicia ahí.
  15. Reinicia pandora_agent_daemon y verifica que el proceso se esté ejecutando (hasta 5 reintentos, con 1s de diferencia).
  16. Limpia $HOME/pandora_deploy_tmp.
  17. Imprime mensaje de éxito en verde.

Registros

Toda la salida de comandos se dirige a /tmp/pandora-agent-deploy-YYYY-MM-DD.log. En caso de fallo, el script imprime la ruta del registro.

Ejemplos

Agente de GO, estable, con nombre y grupo de agente

export PANDORA_SERVER_IP='10.0.0.1' \
       PANDORA_AGENT_PACKAGE=GO \
       PANDORA_AGENT_NAME='web-01' \
       PANDORA_GROUP='Web'
curl -sSL https://pfms.me/agent-deploy | bash

Agente de Perl desde código fuente, beta, automatizado

export PANDORA_SERVER_IP='10.0.0.1' \
       PANDORA_AGENT_PACKAGE=PERL_SOURCES \
       PANDORA_AGENT_RELEASE=BETA \
       PANDORA_SKIP_CONFIRMATION=1
curl -sSL https://pfms.me/agent-deploy | bash

URL directa (compilación personalizada), automatizada

export PANDORA_SERVER_IP='10.0.0.1' \
 PANDORA_AGENT_PACKAGE=\
'https://ci.internal/builds/pandorafms_one_agent_linux-999.go.tar.gz' \
 PANDORA_SKIP_CONFIRMATION=1 \
curl -sSL https://pfms.me/agent-deploy | bash

RHEL sin verificación de suscripción

export PANDORA_SERVER_IP='10.0.0.1' \
       RHEL_CHECK_SUBSCRIPTION=0
curl -sSL https://pfms.me/agent-deploy | bash

SUSE / OpenSUSE (agente de GO)

export PANDORA_SERVER_IP='10.0.0.1' \
       PANDORA_AGENT_PACKAGE=GO
curl -sSL https://pfms.me/agent-deploy | bash

Omitir instalación de dependencias (sistema preinstalado)

export PANDORA_SERVER_IP='10.0.0.1' \
       PANDORA_SKIP_DEPENDENCIES=1
curl -sSL https://pfms.me/agent-deploy | bash

Matriz de SO soportados

SO Versiones Gestor de paquetes Notas
RHEL / CentOS / Rocky / Alma 7 yum
RHEL / CentOS / Rocky / Alma 8 dnf + libnsl para PERL
RHEL / Rocky / Alma 9 dnf + libnsl libxcrypt-compat para PERL
RHEL / Rocky / Alma 10 dnf + libnsl libxcrypt-compat para PERL
SUSE / OpenSUSE Tumbleweed / Leap zypper Sin subpaquetes extra de perl (todo en perl). libnsl3 para PERL_SOURCES.
Debian / Ubuntu 22.04+ apt + procps para todos los tipos.

Resultados de pruebas

Los resultados a continuación son de pruebas en contenedores utilizando el canal BETA (PANDORA_AGENT_RELEASE=BETA).

SO Canónicos (totalmente soportados)

SO GO PERL PERL_SOURCES
Rocky Linux 8 🆗 🆗 🆗
Rocky Linux 9 🆗 🆗 🆗
Rocky Linux 10 🆗 🆗 🆗
Ubuntu 22.04 🆗 🆗 🆗
Ubuntu 24.04 🆗 🆗 🆗
Ubuntu 26.04 🆗 🆗 🆗
openSUSE
Tumbleweed
🆗 fallo instalado,
no iniciará —
libnsl.so.1 no presente
en SUSE (el binario lo necesita)
🆗

SO Adicionales probados

SO GO PERL PERL_SOURCES
Debian 12 🆗 🆗 🆗
Debian 13 🆗 🆗 🆗
Fedora 43 🆗 fallo necesita
libnsl + libxcrypt-compat
(no instalados por defecto)
🆗
AlmaLinux 9 🆗 🆗 🆗
AlmaLinux 10 🆗 🆗 🆗
CentOS Stream 9 🆗 🆗 🆗
CentOS Stream 10 🆗 🆗 🆗

Notas de tuberías (Pipeline)

  • El canal BETA requiere PANDORA_SKIP_CONFIRMATION=1 en entornos no-TTY (contenedores, CICD).
  • PANDORA_SKIP_DEPENDENCIES=1 omite la instalación de paquetes del SO. Úselo solo cuando las dependencias ya estén presentes — tanto el script como el pandora_agent_installer del agente de GO necesitan perl y tar.
  • Oracle Linux no está soportado porque perl no está presente en sus repositorios base. Habilitar ol8_codeready_builder o EPEL puede resolverlo, pero está fuera del alcance del script.
  • Alpine Linux carece de bash y utiliza busybox ash, que no soporta la sintaxis bash utilizada por el script.

← Volver al índice de documentación de Pandora FMS