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,aarch64basculent automatiquement surPERL_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,GOfonctionnent tous). PERL_SOURCESaccepte également les aliasPERLSOURCES,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 :
- Structurelle —
tar tzfliste le contenu et vérifie que ces entrées existent :unix/pandora_agent_installerunix/pandora_agentunix/tentacle_client
- Empreinte (Fingerprint) — extrait
unix/pandora_agent_installervers STDOUT et vérifie la présence de la chaînePandora 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
- Vérifie que
PANDORA_SERVER_IPest défini. - Vérifie que
grep,sedetcurlsont disponibles. - 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. - Vérifie les permissions root.
- Vérifie la connectivité à
packages.pandorafms.com. - Vérifie l'architecture.
x86_64continue avec le paquet sélectionné.x86,armv7l,aarch64basculent automatiquement surPERL_SOURCES(les agents binaires ne fonctionneront pas sur ces architectures). Les autres architectures annulent l'installation. - Résout
PANDORA_AGENT_PACKAGE(sélecteur de type ou URL directe) etPANDORA_AGENT_RELEASE(stable/bêta). BETA peut demander une confirmation. - Crée l'espace de travail temporaire
$HOME/pandora_deploy_tmp. - Installe les dépendances (ignoré si
PANDORA_SKIP_DEPENDENCIES=1). Les dépendances varient selon le type d'agent :- GO :
perl tar(+procpssur 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).
- Télécharge le tarball avec
curl. - Valide le tarball (structurel + empreinte).
- Installe via
install_tarball:
tar xvzf+cd unix && ./pandora_agent_installer –install. - Configure
/etc/pandora/pandora_agent.confavec les variablesPANDORA_*. - Compatibilité Docker/systemd : si
systemctl statuséchoue, copiepandora_agent_daemondans/etc/init.d/et le redémarre à cet endroit. - Redémarre
pandora_agent_daemonet vérifie que le processus est en cours d'exécution (jusqu'à 5 tentatives, espacées d'une seconde). - Nettoie
$HOME/pandora_deploy_tmp. - 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=1dans les environnements non-TTY (conteneurs, CICD). PANDORA_SKIP_DEPENDENCIES=1ignore l'installation des paquets de l'OS. Utilisez-le uniquement lorsque les dépendances sont déjà présentes — le script ainsi que lepandora_agent_installerde l'agent GO ont tous deux besoin deperlettar.- Oracle Linux n'est pas supporté car
perlest absent de ses dépôts de base. L'activation deol8_codeready_builderou d'EPEL peut résoudre ce problème mais cela sort du cadre du script. - Alpine Linux manque de
bashet utilisebusybox ash, qui ne supporte pas la syntaxe bash utilisée par le script.