Automatisation IT : Omnishell
Introduction
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.
- Le serveur 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 logiciel 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
Cette ligne par le biais de la commande rpm liste le logiciel installé et compte les apparitions du mot clé httpd. Si c'est zéro, elle l'instllera.
- 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.
- 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.
La progression de l'exécution de la commande dans les agents sélectionnés est similaire à la suivante :
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 :
Cliquez sur sa case pour 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
ettimeout
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.