====== Automatisation IT : Omnishell ====== {{indexmenu_n>16}} ===== Introduction ===== \\ {{:wiki:icono-modulo-enterprise.png?23x23 |Version Enterprise}}Version 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. {{ :wiki:omnishell1.png }} Omnishell s'appuie sur la communication entre les différents composants de Pandora FMS via [[:en:documentation:pandorafms:technical_reference:09_tentacle|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 [[:fr:documentation:pandorafms:installation:start|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 [[:en:documentation:pandorafms:technical_reference:09_tentacle|du protocole Tentacle]], sur GNU/Linux® ou [[:fr:documentation:pandorafms:technical_reference:09_tentacle#guide_de_tentacle_sur_ms_windows|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** : {{ :wiki:omnishell2.png }} Après la création de la commande, assignez les agents dont vous avez besoin. {{ :wiki:omnishell3.png }} La progression de l'exécution de la commande dans les agents sélectionnés est similaire à la suivante : {{ :wiki:omnishell4.png }} {{ :wiki:omnishell4-1.png }} En accédant à la vue, vous verrez le temps estimé en attente pour l'exécution de la commande : {{ :wiki:omnishell5.png }} Lorsque vous appliquez l'exécution de la commande en bloc, la vue sera la suivante dans l'exemple : {{ :wiki:omnishell7.png }} Cliquez sur sa case pour obtenir un modal avec des informations supplémentaires : {{ :wiki:omnishell6.png }} === 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 [[:fr:documentation:pandorafms:management_and_operation:16_omnishell#exemple_sur_gnu_linux|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 [[:fr:documentation:pandorafms:introduction:03_glossary#shell_ou_ligne_de_commande|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 [[https://github.com/PowerShell/PowerShell/tree/master/docs/learning-powershell|GitHub]] pour obtenir la dernière version mise à jour. Vous pouvez obtenir des informations intéressantes sur [[https://pandorafms.com/blog/powershell-101/|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 [[:en:faq:start#how_can_i_execute_powershell_scripts_as_a_module|l'exécution de scripts dans un module]] ou sur l'utilisation [[https://pandorafms.com/library/powershell-module-template/|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é. {{ :wiki:agente_software_746_windows_7_32_bits_paso_6.png?560 }} ==== 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. [[:fr:documentation:start|Retour à l'index de documentation du Pandora FMS]]