Automatisation IT : Omnishell

Introduction


Version EnterpriseVersion 746 ou ultérieure


Omnishell est une fonctionnalité de Pandora FMS Enterprise utilisée pour l'orchestration/automatisation informatique. Il s'agit d'un outil, totalement natif et intégré dans la console et les agents PFMS, qui permet de définir des commandes ou des blocs de commandes et de sélectionner les cibles où les exécuter.

Omnishell s'appuie sur la communication entre les différents composants de Pandora FMS via Tentacle, pour coordonner en toute sécurité les exécutions et les réponses des commandes que vous souhaitez programmer.


Vous devez avoir installé dans la console Pandora FMS la dépendance php-yaml et dans les agents logiciels GNU/Linux la dépendance perl-YAML-Tiny.

Configurations supplémentaires du Tentacle server


Uniquement pour le NG 742 ou les versions antérieures.

  • Tentacle a besoin d'un changement de configuration pour pouvoir adresser les fichiers .rcmd.
  • Ces fichiers sont des fichiers de définition de commande. Ce sera l'agent qui téléchargera la définition et l'évaluera.
  • La définition du filtre de fichier du serveur Tentacle doit être mise à jour par:
  • Modification du fichier /etc/tentacle/tentacle_server.conf :
# Filters (regexp:dir,regexp:dir...)
filters .*\.conf:conf;.*\.md5:md5;.*\.zip:collections;.*\.lock:trans;.*\.rcmd:commands
  • Vous pouvez également utiliser le fichier tentacle_server.conf.new qui est distribué lorsque le serveur pandora_server est installé.
  • Les fichiers .rcmd seront publiés dans le nouveau dossier:
 /var/spool/pandora/data_in/commands
  • Il est important de se rappeler que ce dossier doit avoir des autorisations pour les utilisateurs qui gèrent le serveur Pandora FMS et Apache qui gère la console :
 chown pandora:apache -R /var/spool/pandora/data_in/commands
 chmod g+s /var/spool/pandora/data_in/commands
  • Un hachage sera utilisé en fonction de certains paramètres de la définition de la commande.
  • Vous devez assurer l'installation du protocole Tentacle, sur GNU/Linux® ou MS Windows®, selon le cas.

Opération

Une tâche Omnishell est définie par trois éléments :

Précondition

Par une ou plusieurs commandes avec chaque exécution séquentielle qui doit être réussie pour toutes (résultat errorlevel 0 ).

CommandesÀ exécuter dans l'agent logiciel cible, dans une liste séquentielle.

Postcondition

Par une ou plusieurs commandes avec chaque exécution séquentielle qui doit être réussie pour toutes (résultat errorlevel 0 ).


Si l'une des commandes définies dans Précondition, Commandes ou Postcondition passe en mode interactif, bloquant le flux d'exécution, la tâche sera interrompue. L'agent logiciel lui-même détruira le processus après le délai d'attente configuré pour la tâche.

Exemple sur GNU Linux

Vous voulez configurer le démarrage automatique du service HTTPD sur les systèmes CentOS 7 en bloc.

  • Quelle est la condition préalable? Que le service apparaisse comme installé et installer-le au cas où il ne l'est pas :
[ `rpm -qa | grep -i httpd | wc -l` -lt 1 ] || yum install -y httpd

La première ligne va démarrer le service sur la machine distante. La ligne suivante configure le système pour qu'il démarre à chaque redémarrage du serveur distant.

  • Quel est le besoin principal ? Démarrez et configurez le démarrage automatique du service HTTPD.
 systemctl restart httpd
 systemctl enable httpd.service

La première ligne va démarrer le service sur la machine distante. L'étape suivante consiste à configurer le système pour qu'il démarre à chaque redémarrage du serveur distant. Cela démarrera le service sur la machine distante et configurera le système pour qu'il démarre automatiquement.

  • Comment valider la tâche principale ? : Recherchez via netstat les connexions réseau qui sont httpd et qui écoutent sur un certain port. S'il y en a un ou plusieurs, la condition renvoie à vrai.
[ `netstat -lptn | grep 80 | grep LISTEN | wc -l` -gt 0 ]

Une fois que vous ayez compris clairement ce que vous voulez que les agents fassent, créez la commande dans Omnishell :

Après la création de la commande, assignez les agents dont vous avez besoin.

Vous pouvez voir la progression de l'exécution de la commande dans les agents sélectionnés :

En accédant à la vue, vous verrez le temps estimé en attente pour l'exécution de la commande :

Lorsque vous appliquez l'exécution de la commande en bloc, la vue sera la suivante dans l'exemple :

Une fois la réponse de l'agent reçue, vous verrez les résultats de l'exécution. En cliquant sur sa case vous pouvez obtenir un modal avec des informations supplémentaires :

Exemple sous MS Windows

Pour cet environnement, Omnishell est encore en période de test. Certaines de ses fonctionnalités sont donc susceptibles d'être modifiées ou ne sont pas disponibles. Ce n'est que temporaire et nous nous en excusons.

En ce qui concerne le processus de configuration dans la console Pandora FMS, vous devez répéter exactement les mêmes étapes que celles de l'exemple précédent sous GNU/Linux, seul le code à exécuter change.

Pour la simplicité de cet exemple, seules la phase de précondition et la tâche principale sont utilisées, respectivement:

powershell.exe -command "Start-Sleep -Seconds 1"
powershell.exe -command "$mode = Get-Executionpolicy ; if ( $mode -like "restricted" ) {Write-Error -Message "0"}"

PowerShell est un nouveau shell Windows qui a été conçu expressément pour les administrateurs système. Il comprend une invite de commande interactive et un environnement de scripting qui peuvent être utilisés indépendamment ou ensemble. Il est installé avec ce système d'exploitation, mais vous pouvez installer PowerShell Core à partir de son dépôt sur GitHub pour obtenir la dernière version mise à jour. Vous pouvez obtenir des informations intéressantes sur PowerShell sur le blog de Pandora FMS.

La condition préalable vérifie que PowerShell est installé et peut être utilisé, sinon elle renvoie une erreur et l'étape suivante ne peut être exécutée.

Dans la tâche principale, il est question de la possibilité d'exécuter des scripts écrits en PowerShell. S'il fonctionne sans erreur, vous pouvez ajouter du code dans la phase de test pour en utiliser un pour effectuer des tâches plus longues et plus complexes. Pour plus d'informations, consultez la documentation sur l'exécution de scripts dans un module ou sur l'utilisation d'un modèle pour créer un module à l'aide de PowerShell.

Pendant l'installation de l'agent logiciel, vous devez cocher l'option Enable remote config. Si vous avez déjà installé cet agent, vous devrez modifier le fichier %PROGRAMFILES%\pandora_agent\pandora_agent.conf avec des droits d'administrateur et ajoutez (ou modifiez) la ligne suivante : remote_config 1. Dans le groupe de programmes Pandora FMS du menu de démarrage, il y a un accès direct au script %PROGRAMFILES%\pandora_agent\scripts\edit_config_file.bat pour plus de rapidité et de facilité.

Remarques

  • L'agent exécutera chaque commande de chaque bloc.
  • Si l'évaluation de chaque commande n'est pas 0 ( error_level !=0 ), elle arrêtera l'évaluation et la commande échouera.
  • L'agent prendra les valeurs des paramètres retry et timeout pour le nombre de tentatives et le temps d'exécution maximal, respectivement.
  • Quel que soit le résultat, l'agent enregistre une marque d'exécution. Chaque commande n'est exécutée qu'une seule fois.
  • Si vous mettez à jour le nom de la commande, l'agent la réexécutera, car la référence changera.
  • Vous pouvez affecter autant de commandes que vous le souhaitez au même agent.
  • L'exécution de commandes dans l'agent peut affecter la supervision. N'utilisez pas un délai supérieur à l'intervalle de l'agent.

Retour à l'index de documentation du Pandora FMS