Script de Déploiement EndPoint Pandora FMS

Introduction

Installeur EndPoint pour Linux. Il installe toujours à partir d'un tarball (jamais d'un RPM), valide que le tarball téléchargé est un véritable EndPoint Pandora FMS et configure l'agent pour qu'il fasse son rapport à un Serveur Pandora FMS.

  • Script : ../pandora_agent_deploy.sh
  • Portée : Télécharge depuis packages.pandorafms.com.
  • Systèmes d'exploitation pris en charge : RHEL/Fedora (EL7/8/9/10), SUSE/OpenSUSE, Debian/Ubuntu.
  • Architectures supportées : x86_64 (agents binaires). x86, armv7l, aarch64 basculent automatiquement sur PERL_SOURCES (compilation depuis les sources). Les autres architectures annulent l'installation.

Démarrage rapide

Installation minimale (agent GO, canal stable) :

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

Entièrement automatisée (sans invites) :

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 d'environnement

Requises

Variable Description
PANDORA_SERVER_IP Requise. Adresse IP ou nom d'hôte du Serveur Pandora FMS auquel l'agent fera son rapport. Le script s'interrompt si ce n'est pas défini.

Sélection du paquet

Variable Par défaut Valeurs acceptées
PANDORA_AGENT_PACKAGE
(Via
PANDORA_AGENT_PACKAGE_TYPE)
Sélectionne quel tarball
d'agent installer.
Voir Sélection du paquet.
GO GO,
PERL,
PERL_SOURCES,
ou une URL
directe http(s)://
PANDORA_AGENT_PACKAGE_TYPE
Type de secours
utilisé uniquement lorsque
PANDORA_AGENT_PACKAGE
n'est pas défini.
Utile lorsque vous souhaitez
un type par défaut tout en
permettant aux appelants de le
remplacer par une URL directe.
GO GO,
PERL,
PERL_SOURCES
PANDORA_AGENT_RELEASE
Canal de publication.
STABLE télécharge depuis …/latest,
BETA
télécharge depuis …/nightlies.
Voir Canaux de publication.
STABLE STABLE,
BETA (insensible à la casse)
PANDORA_SKIP_CONFIRMATION
Lorsqu'il est défini sur 1, ignore
les invites de confirmation interactives. À utiliser dans le CICD
et les pipelines automatisés.
Voir Confirmation.
non défini 1 / non défini

Configuration de l'agent (optionnelle)

Tous ces éléments sont injectés dans /etc/pandora/pandora_agent.conf après l'installation via sed. Si une variable n'est pas définie, la ligne de configuration correspondante reste intacte.

Variable Clé de config. affectée Effet
PANDORA_REMOTE_CONFIG remote_config Active/désactive la configuration à distance
depuis le serveur.
PANDORA_GROUP group Définit le groupe de l'agent.
PANDORA_DEBUG debug Active le mode de débogage
(journalisation détaillée).
PANDORA_AGENT_NAME agent_name Définit le nom de l'agent
(décommente la ligne).
PANDORA_AGENT_ALIAS agent_alias Définit l'alias de l'agent
(décommente la ligne).
PANDORA_SECONDARY_GROUPS secondary_groups Définit les groupes secondaires
(décommente la ligne).
PANDORA_AGENT_SSL server_ssl Active SSL pour la connexion tentacle
(décommente la ligne).
TIMEZONE lien symbolique /etc/localtime Définit le fuseau horaire du système
(par ex. Europe/Paris).

Comportement de l'OS

Variable Par défaut Valeurs acceptées Description
RHEL_CHECK_SUBSCRIPTION 1 0 / 1 Lorsque 1, sur RHEL
(pas Oracle Linux)
le script vérifie l'état de subscription-manager
avant l'installation.
Définir sur 0 pour
ignorer la vérification de l'abonnement.
PANDORA_SKIP_DEPENDENCIES non défini 1 / non défini Lorsque défini sur 1,
ignore toute installation de dépendances de l'OS
(perl, libnsl, etc.).
À utiliser lorsque vous pré-installez
les dépendances vous-même.

Sélection du paquet

PANDORA_AGENT_PACKAGE accepte deux types de valeurs : un sélecteur de type ou une URL directe.

Sélecteurs de type

Valeur Tarball téléchargé (stable) Description
GO pandorafms_one_agent_linux-latest.go.tar.gz Agent Go (binaire).
Par défaut.
PERL pandorafms_one_agent_linux-latest.tar.gz Agent Perl
(tarball binaire pré-compilé).
PERL_SOURCES pandorafms_one_agent_linux-latest.src.tar.gz Agent Perl depuis les sources
(nécessite Perl sur la machine cible).
  • Le sélecteur est insensible à la casse (go, Go, GO fonctionnent tous).
  • PERL_SOURCES accepte également les alias PERLSOURCES, PERL_SRC, PERLSRC.

URL directe

Si la valeur commence par http:// ou https://, elle est utilisée telle quelle et la logique de version par défaut est ignorée. Un avertissement jaune est affiché :

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

Le tarball est toujours validé avant l'installation (voir Validation du tarball), donc une mauvaise URL échoue rapidement au lieu d'installer n'importe quoi.

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

Valeur invalide

Si PANDORA_AGENT_PACKAGE est défini sur quelque chose qui n'est ni un sélecteur de type ni une URL, le script s'interrompt avec une erreur rouge.

Remplacement d'architecture

Les agents binaires (GO, PERL) ne fonctionnent que sur x86_64. Si le script détecte x86, armv7l, ou aarch64, il remplace automatiquement le type de paquet par PERL_SOURCES (compilation depuis les sources) et affiche un avertissement jaune :

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.

Ce remplacement ne s'applique PAS si :

  • L'utilisateur a déjà sélectionné PERL_SOURCES (aucun changement nécessaire).
  • L'utilisateur a fourni une URL directe (respectée, mais un avertissement jaune est affiché pour rappeler que l'architecture nécessite une compilation depuis les sources).

Canaux de publication

PANDORA_AGENT_RELEASE choisit entre les versions stables et bêta (nightly).

Valeur URL de base
STABLE
Suffixe du tarball
latest
https://packages.pandorafms.com/pandorafms/latest
BETA
Suffixe du tarball
nightlies
https://packages.pandorafms.com/pandorafms/nightlies

Ainsi, avec PANDORA_AGENT_RELEASE=BETA PANDORA_AGENT_PACKAGE=GO, le tarball téléchargé est :

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

La valeur est normalisée en majuscules, donc beta, Beta, BETA sont tous acceptés. Une valeur invalide annule l'opération avec une erreur rouge.

Avertissement BETA

Lorsque PANDORA_AGENT_RELEASE=BETA, un avertissement jaune s'affiche avec l'URL des nightlies.
Selon PANDORA_SKIP_CONFIRMATION, le script demande une confirmation ou continue automatiquement (voir Confirmation).

Confirmation

La fonction confirm() demande à l'utilisateur de taper Y ou y pour continuer. Elle lit depuis /dev/tty, ce qui lui permet de fonctionner même lorsque le script est exécuté via un pipe (curl … | bash).

PANDORA_SKIP_CONFIRMATION PANDORA_AGENT_RELEASE Comportement
non défini / différent de 1 BETA Affiche un avertissement jaune + demande Y/y pour continuer. S'interrompt pour toute autre réponse.
1 BETA Affiche uniquement l'avertissement jaune, continue sans demander.
n'importe lequel STABLE Aucune invite de confirmation (la version stable ne le nécessite pas).

CICD / utilisation automatisée : définissez toujours PANDORA_SKIP_CONFIRMATION=1 pour que le script ne se bloque jamais en attendant une saisie.

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

Validation du tarball

Après le téléchargement, le script valide le tarball avant l'installation. Deux couches :

  1. Structurelletar tzf liste le contenu et vérifie que ces entrées existent :
    • unix/pandora_agent_installer
    • unix/pandora_agent
    • unix/tentacle_client
  2. Empreinte (Fingerprint) — extrait unix/pandora_agent_installer vers STDOUT et vérifie la présence de la chaîne Pandora FMS Agent Installer for Unix.

Si l'une des couches échoue, le script affiche une erreur rouge montrant l'URL téléchargée, nettoie le répertoire temporaire et se termine. Cela évite d'installer un tarball qui n'est pas un agent Pandora FMS (par ex. une mauvaise URL pointant vers un paquet de console ou de serveur).

Flux d'installation

  1. Vérifie que PANDORA_SERVER_IP est défini.
  2. Vérifie que grep, sed et curl sont disponibles.
  3. Détecte le système d'exploitation à partir de /etc/os-release (ID_LIKE / ID). S'interrompt si ce n'est pas RHEL/Fedora/SUSE/Debian.
  4. Vérifie les permissions root.
  5. Vérifie la connectivité à packages.pandorafms.com.
  6. Vérifie l'architecture. x86_64 continue avec le paquet sélectionné. x86, armv7l, aarch64 basculent automatiquement sur PERL_SOURCES (les agents binaires ne fonctionneront pas sur ces architectures). Les autres architectures annulent l'installation.
  7. Résout PANDORA_AGENT_PACKAGE (sélecteur de type ou URL directe) et PANDORA_AGENT_RELEASE (stable/bêta). BETA peut demander une confirmation.
  8. Crée l'espace de travail temporaire $HOME/pandora_deploy_tmp.
  9. Installe les dépendances (ignoré si PANDORA_SKIP_DEPENDENCIES=1). Les dépendances varient selon le type d'agent :
    • GO : perl tar (+ procps sur Debian).
    • PERL : perl perl-Sys-Syslog unzip tar (+ RHEL : libnsl/libxcrypt, SUSE : aucune, Debian : procps).
    • PERL_SOURCES : ensemble complet incluant 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. Télécharge le tarball avec curl.
  11. Valide le tarball (structurel + empreinte).
  12. Installe via install_tarball :
    tar xvzf + cd unix && ./pandora_agent_installer –install.
  13. Configure /etc/pandora/pandora_agent.conf avec les variables PANDORA_*.
  14. Compatibilité Docker/systemd : si systemctl status échoue, copie pandora_agent_daemon dans /etc/init.d/ et le redémarre à cet endroit.
  15. Redémarre pandora_agent_daemon et vérifie que le processus est en cours d'exécution (jusqu'à 5 tentatives, espacées d'une seconde).
  16. Nettoie $HOME/pandora_deploy_tmp.
  17. Affiche un message de succès en vert.

Logs

Toutes les sorties de commande vont dans /tmp/pandora-agent-deploy-YYYY-MM-DD.log. En cas d'échec, le script affiche le chemin du fichier journal.

Exemples

Agent GO, stable, avec nom et groupe de l'agent

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

Agent Perl depuis les sources, bêta, automatisé

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 directe (compilation personnalisée), automatisée

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 sans vérification d'abonnement

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

SUSE / OpenSUSE (agent GO)

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

Ignorer l'installation des dépendances (système pré-installé)

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

Matrice des OS supportés

OS Versions Gestionnaire de paquets Notes
RHEL / CentOS / Rocky / Alma 7 yum
RHEL / CentOS / Rocky / Alma 8 dnf + libnsl pour PERL
RHEL / Rocky / Alma 9 dnf + libnsl libxcrypt-compat pour PERL
RHEL / Rocky / Alma 10 dnf + libnsl libxcrypt-compat pour PERL
SUSE / OpenSUSE Tumbleweed / Leap zypper Pas de sous-paquets perl supplémentaires (tout est dans perl). libnsl3 pour PERL_SOURCES.
Debian / Ubuntu 22.04+ apt + procps pour tous les types.

Résultats des tests

Les résultats ci-dessous proviennent de tests conteneurisés utilisant le canal BETA (PANDORA_AGENT_RELEASE=BETA).

OS Canoniques (entièrement supportés)

OS GO PERL PERL_SOURCES
Rocky Linux 8 🆗 🆗 🆗
Rocky Linux 9 🆗 🆗 🆗
Rocky Linux 10 🆗 🆗 🆗
Ubuntu 22.04 🆗 🆗 🆗
Ubuntu 24.04 🆗 🆗 🆗
Ubuntu 26.04 🆗 🆗 🆗
openSUSE
Tumbleweed
🆗 échec installé,
ne démarre pas —
libnsl.so.1 non présent
sur SUSE (le binaire en a besoin)
🆗

OS supplémentaires testés

OS GO PERL PERL_SOURCES
Debian 12 🆗 🆗 🆗
Debian 13 🆗 🆗 🆗
Fedora 43 🆗 échec nécessite
libnsl + libxcrypt-compat
(non installés par défaut)
🆗
AlmaLinux 9 🆗 🆗 🆗
AlmaLinux 10 🆗 🆗 🆗
CentOS Stream 9 🆗 🆗 🆗
CentOS Stream 10 🆗 🆗 🆗

Notes de pipeline

  • Le canal BETA nécessite PANDORA_SKIP_CONFIRMATION=1 dans les environnements non-TTY (conteneurs, CICD).
  • PANDORA_SKIP_DEPENDENCIES=1 ignore l'installation des paquets de l'OS. Utilisez-le uniquement lorsque les dépendances sont déjà présentes — le script ainsi que le pandora_agent_installer de l'agent GO ont tous deux besoin de perl et tar.
  • Oracle Linux n'est pas supporté car perl est absent de ses dépôts de base. L'activation de ol8_codeready_builder ou d'EPEL peut résoudre ce problème mais cela sort du cadre du script.
  • Alpine Linux manque de bash et utilise busybox ash, qui ne supporte pas la syntaxe bash utilisée par le script.

← Retour à l'index de la documentation de Pandora FMS