<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Configuration on Zwindler's Reflection</title><link>https://blog.zwindler.fr/tags/configuration/</link><description>Recent content in Configuration on Zwindler's Reflection</description><generator>Hugo -- gohugo.io</generator><language>fr-fr</language><copyright>Licensed under CC BY-SA 4.0</copyright><lastBuildDate>Wed, 07 Dec 2016 13:00:47 +0000</lastBuildDate><atom:link href="https://blog.zwindler.fr/tags/configuration/index.xml" rel="self" type="application/rss+xml"/><item><title>Automatisation de la supervision avec Centreon et Ansible (3)</title><link>https://blog.zwindler.fr/2016/12/07/automatisation-de-la-supervision-avec-centreon-et-ansible-3/</link><pubDate>Wed, 07 Dec 2016 13:00:47 +0000</pubDate><guid>https://blog.zwindler.fr/2016/12/07/automatisation-de-la-supervision-avec-centreon-et-ansible-3/</guid><description>&lt;img src="https://blog.zwindler.fr/2016/12/centreon_clapi_3.webp" alt="Featured image of post Automatisation de la supervision avec Centreon et Ansible (3)" /&gt;&lt;h2 id="articles-précédents-sur-centreon-et-ansible"&gt;Articles précédents sur Centreon et Ansible
&lt;/h2&gt;&lt;p&gt;Cet article fait suite aux deux articles rédigés en mai 2015 par Cédric Temple (&lt;a class="link" href="http://www.monitoring-fr.org/2015/05/automatisation-de-la-supervision-exemple-avec-centreon-et-ansible-1/" target="_blank" rel="noopener"
&gt;ici&lt;/a&gt; et &lt;a class="link" href="http://www.monitoring-fr.org/2015/05/automatisation-de-la-supervision-exemple-avec-centreon-et-ansible-2/" target="_blank" rel="noopener"
&gt;ici&lt;/a&gt;) qui donnent des pistes pour automatiser l’ajout de nœuds à superviser dans un console Centreon grâce à Ansible et CLAPI.&lt;/p&gt;
&lt;p&gt;Pour ceux qui ne connaissent pas &lt;a class="link" href="https://www.ansible.com/" target="_blank" rel="noopener"
&gt;Ansible&lt;/a&gt;, je vous invite fortement à vous documenter sur cet outil de déploiement et de gestion de configuration très complet et qui bénéficie en ce moment d’un fort engouement, surtout depuis qu’Ansible a été racheté par RedHat ;-).&lt;/p&gt;
&lt;p&gt;Et pour ceux qui ne connaissent pas &lt;a class="link" href="https://docs.centreon.com/fr/docs/api/clapi/" target="_blank" rel="noopener"
&gt;CLAPI&lt;/a&gt;, il s’agit d’une API mise à disposition avec &lt;a class="link" href="https://www.centreon.com/fr/" target="_blank" rel="noopener"
&gt;Centreon&lt;/a&gt;. Elle est installée par défaut dans les dernières versions. Elle permet de réaliser la totalité des opérations pouvant être faites depuis la console web en ligne de commande.&lt;/p&gt;
&lt;p&gt;Les deux articles sur &lt;strong&gt;Monitoring-fr&lt;/strong&gt; que je cite au début sont une bonne base pour appréhender ces deux sujets. Pour autant, on peut encore aller un peu plus loin et c’est pourquoi je vous propose de repartir de là où s’arrête l’article précédent.&lt;/p&gt;
&lt;h2 id="lexemple-de-lajout-de-lhôte"&gt;L’exemple de l’ajout de l’hôte
&lt;/h2&gt;&lt;p&gt;A la fin de l’article précédent, on sait donc :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;installer automatiquement les clients de supervision sur un nouvel hôte&lt;/li&gt;
&lt;li&gt;et réaliser de manière unitaire via Ansible et des playbooks l’ajout et la modification d’hôtes dans Centreon.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;J’aimerai revenir sur l’ajout d’hôtes dans Centreon. Pour reprendre l’exemple du playbook d’ajout d’hôtes de Cédric :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;cat centreon_add_host.yml
- name: centreon add host
shell: /usr/share/centreon/www/modules/centreon-clapi/core/centreon -u admin -p admin -o HOST -a add -v &amp;#39;{{ inventory_hostname }};{{ inventory_hostname }};{{ ansible_default_ipv4.address }};generic-host;central;ALL_HOST&amp;#39;
delegate_to: superviseur.company.lan
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Et voici le fichier d’inventaire dans lequel on déclare l’ensemble de nos serveurs, triés par groupes.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;cat /etc/ansible/hosts #fichier hosts d&amp;#39;Ansible
#ne pas confondre avec le hosts d&amp;#39;un serveur Linux
[serveurs-centreon]
superviseur.company.lan
pollerprod.company.lan
[serveurs-prod]
srv-prod-01
srv-prod-02
[serveurs-rect]
srv-rect-01
srv-rect-02
[nouveaux]
srv-nouveau-01
srv-nouveau-02
[serveurs-linux:children]
serveurs-prod
serveurs-rect
nouveaux
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Dans cet exemple simple, la première chose qu’on se dit si on regarde un peu rapidement, c’est qu’on aurait pu réaliser cet ajout à la main (ou via un script) avec CLAPI.&lt;/p&gt;
&lt;p&gt;Le gain apporté par Ansible se situe « seulement » dans l’apport des variables &lt;em&gt;inventory_hostname&lt;/em&gt; et &lt;em&gt;ansible_default_ipv4.address&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Ici on tire partie de la faculté qu’a Ansible de récupérer des « facts » sur les machines, telle que l’adresse IP, que nous n’avons pas eu à renseigner.&lt;/p&gt;
&lt;p&gt;C’est déjà un bon point par rapport à un script ou une commande à la main &amp;hellip; mais on peut faire mieux !!&lt;/p&gt;
&lt;h2 id="aller-plus-loin--avec-les-variables-de-groupes"&gt;Aller plus loin : avec les variables de groupes
&lt;/h2&gt;&lt;p&gt;La première chose que je vais montrer dans cet article est qu’on peut également affecter aux groupes d’hôtes dans Ansible des variables.&lt;/p&gt;
&lt;p&gt;Dans notre exemple, je vais donc créer un répertoire &lt;em&gt;group_vars&lt;/em&gt; dans lequel je vais créer des fichiers de configuration dédiés à chaque groupe. J’en créé un par groupe (ou pas), et Ansible analysera automatiquement le répertoire group_vars et appliquera à mes hôtes toutes ces variables en fonction de ses groupes.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;cat /etc/ansible/group_vars/serveurs-linux.yml
#NRPE Servers
nrpe_servers: [&amp;#39;192.168.100.10&amp;#39;, &amp;#39;192.168.100.11&amp;#39;]
#Poller Centreon
centreon_server: &amp;#39;superviseur.company.lan&amp;#39;
centreon_pollername : &amp;#39;Central&amp;#39;
centreon_clapi_username : &amp;#39;admin&amp;#39;
centreon_clapi_password : &amp;#39;admin&amp;#39;
centreon_clapi_path : &amp;#39;/usr/share/centreon/www/modules/centreon-clapi/core/centreon&amp;#39;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Je modifie donc mon playbook de la façon suivante :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;cat centreon_add_host.yml
---
- name: centreon add host
shell: &amp;#39;{{centreon_clapi_path}}&amp;#39; -u &amp;#39;{{ centreon_clapi_username }}&amp;#39; -p &amp;#39;{{ centreon_clapi_password }}&amp;#39; -o HOST -a add -v &amp;#39;{{ inventory_hostname }};{{ inventory_hostname }};{{ ansible_default_ipv4.address }};generic-host;{{ centreon_pollername }};ALL_HOST&amp;#39;
delegate_to: &amp;#39;{{centreon_server}}&amp;#39;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Le playbook est beaucoup plus &lt;em&gt;réutilisable&lt;/em&gt; qu’avant. Qu’est ce qui a changé ?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;J’ai variabilisé le chemin vers le binaire d’appel de CLAPI, qui était quand même vraiment long  (Même si on préfèrera probablement plutôt ajouter le chemin dans le PATH, simplement) !&lt;/li&gt;
&lt;li&gt;Je n’ai plus à renseigner le username et le mot de passe pour CLAPI à chaque appel.&lt;/li&gt;
&lt;li&gt;Si j’ai plusieurs serveurs Centreon (plusieurs réseaux distincts par exemple), je n’ai qu’à créer un groupe et un fichier de variables dans group_vars dans lequel je renseignerai « centreon_server », « clapi_username » et « clapi_password » différents. Mon playbook restera inchangé.&lt;/li&gt;
&lt;li&gt;Si j’ai plusieurs pollers (pollerprod pour la prod dans cet exemple), je peux affecter le serveur directement au bon poller avec la variable « centreon_pollername ».&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="encore-un-peu-plus-loin--avec-les-groupes-et-lhéritage"&gt;Encore un peu plus loin : avec les groupes et l’héritage
&lt;/h2&gt;&lt;p&gt;Dans la configuration exemple que je donne plus haut, vous aurez peut être remarqué le groupe &lt;strong&gt;serveurs-linux&lt;/strong&gt; qui regroupe tous les serveurs des groupes serveurs-prod, serveurs-rect et nouveaux.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;[serveurs-linux:children]
serveurs-prod
serveurs-rect
nouveaux
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;De cette manière, tous les paramètres communs à tous les serveurs linux peuvent être configurés au niveau serveurs-linux. Les variables seront héritées lors de l’exécution du playbook.&lt;/p&gt;
&lt;p&gt;On peut aussi utiliser les groupes comme conditions de l’exécution d’un playbook. Ainsi, le playbook suivant ne s’exécutera que si le serveur fait parti du groupe serveurs-prod.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;cat centreon_add_host_prod.yml
---
- name: centreon add host when in serveurs-prod
shell: &amp;#39;{{centreon_clapi_path}}&amp;#39; -u &amp;#39;{{ centreon_clapi_username }}&amp;#39; -p &amp;#39;{{ centreon_clapi_password }}&amp;#39; -o HOST -a add -v &amp;#39;{{ inventory_hostname }};{{ inventory_hostname }};{{ ansible_default_ipv4.address }};generic-host;{{ centreon_pollername }};ALL_HOST&amp;#39;
delegate_to: &amp;#39;{{centreon_server}}&amp;#39;
when: &amp;#34;&amp;#39;serveurs-prod&amp;#39; in group_names&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="toujours-plus-loin--avec-les-variables-et-les-templates"&gt;Toujours plus loin : avec les variables et les templates
&lt;/h2&gt;&lt;p&gt;Les variables sont vraiment un gros plus !&lt;/p&gt;
&lt;p&gt;Elles me permettent notamment de configurer les fichiers &lt;strong&gt;nrpe.conf&lt;/strong&gt; (ou &lt;strong&gt;ntpd.conf&lt;/strong&gt;, &lt;strong&gt;snmpd&lt;/strong&gt;, &lt;strong&gt;resolv.conf&lt;/strong&gt;, &amp;hellip;) pour accepter les connexions des bons serveurs en fonction de la localisation ou du groupe.&lt;/p&gt;
&lt;p&gt;La fonctionnalité la plus utile dans ce cas là est l’utilisation de &lt;strong&gt;templates&lt;/strong&gt;. Il s’agit de fichiers de configurations &lt;em&gt;variabilisés&lt;/em&gt; qui sont déployés uniquement si nécessaire sur les serveurs cibles en fonction de leurs variables.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Exemple d’un template de fichier nrpe.conf&lt;/strong&gt;&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;{{ ansible_managed }}
cat nrpe.conf.j2
log_facility=daemon
pid_file=/var/run/nrpe.pid
server_port=5666
nrpe_user=nagios
nrpe_group=nagios
allowed_hosts={% for i in nrpe_servers %} {{ i }}, {% endfor %}
debug=0
command_timeout=60
connection_timeout=300
command[check_users]=/libexec/check_users -w 5 -c 10
[...]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Le playbook suivant permettra de le déployer sur l’ensemble de mes serveurs CentOS et Redhat le package du client &lt;strong&gt;nrpe&lt;/strong&gt; et ses dépendances et configurer le fichier &lt;strong&gt;nrpe.cfg&lt;/strong&gt; &lt;em&gt;en fonction du contexte&lt;/em&gt; (pour ceux qui n’ont pas encore ce fichier ou une version différente).&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;cat nrpe.yml
---
- hosts: all
tasks:
- yum: name={{ item }} state=installed
with_items:
- nrpe.x86_64
- net-snmp
- sysstat
- ...
- template: src=nrpe.cfg.j2 dest=/etc/nagios/nrpe.cfg
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Une fois exécuté avec la commande suivante, Ansible balayera l’ensemble des serveurs renseignés dans le fichier /etc/ansible/hosts, vérifiera qu’ils ont tous les packages &lt;strong&gt;nrpe&lt;/strong&gt; d’installés, puis déploiera sur les serveurs nécessaires le fichier de configuration en fonction des variables de chacun.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;ansible-playbook -i /etc/ansible/hosts /etc/ansible/nrpe.yml
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Et dans mon exemple on obtiendra un fichier de la forme suivante :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;# Ansible managed: nrpe.cfg.j2 modified on 2016-08-14 10:52:51 by ansible on hostname
log_facility=daemon
pid_file=/var/run/nrpe.pid
server_port=5666
nrpe_user=nagios
nrpe_group=nagios
allowed_hosts=192.168.100.10, 192.168.100.11,
debug=0
command_timeout=60
connection_timeout=300
command[check_users]=/libexec/check_users -w 5 -c 10
[...]
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="mais-ansible-est-avant-tout-un-gestionnaire-de-configuration"&gt;Mais Ansible est avant tout un gestionnaire de configuration
&lt;/h2&gt;&lt;p&gt;Ansible ne sert pas uniquement à déployer des applications sur un serveur ou à exécuter des tâches automatisables. Au delà de ces rôles qu’il rempli à merveille, Ansible est surtout un gestionnaire de configuration (comme Puppet, Salt, &amp;hellip;).&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Ansible&lt;/em&gt; is the simplest way to automate apps and IT infrastructure. Application Deployment + Configuration Management + Continuous Delivery.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;On le voit avec mon dernier exemple : le but est de garantir qu’un ensemble de serveurs donnés, on a &lt;strong&gt;toujours&lt;/strong&gt; la même configuration.&lt;/p&gt;
&lt;p&gt;C’est le principe fondamental des outils de gestion de configuration et on comprend vite le gain :&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;
Si une modification est réalisée par erreur, elle sera automatiquement corrigée au prochain passage du playbook =&gt; on n’aura pas besoin d’attendre qu’un administrateur passe par hasard sur un serveur pour remarquer une anomalie sur le NTP par exemple.
&lt;/p&gt;
&lt;p&gt;Appliqué à la supervision et Centreon&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;
Je garanti que tous les serveurs inscris dans Ansible sont automatiquement ajoutés dans Centreon, en fonction de leur groupe. Si un administrateur oublie d’ajouter un serveur ou en supprime un, il sera ré-ajouté à l’exécution d’après sans intervention manuelle.
&lt;/p&gt;
&lt;p&gt;C’est donc de cette manière qu’il est conseillé d’utiliser Ansible. Le playbook n’est pas là pour être joué une fois par serveur, au fil de l’eau, car c’est source d’erreur ou d’oublis. On préférera plutôt exécuter régulièrement l’ensemble des playbooks qui définissent le SI sur l’ensemble des serveurs pour s’assurer qu’ils sont tous « conformes », sur tous les aspects dont la supervision.&lt;/p&gt;
&lt;p&gt;Le réel gain en terme d’automatisation ce trouve ici.&lt;/p&gt;
&lt;h2 id="et-dans-larticle-qui-va-suivre-"&gt;Et dans l’article qui va suivre ?
&lt;/h2&gt;&lt;p&gt;Et c’est sur cette deuxième partie que nous nous attarderons dans le prochain article : la gestion de playbook pour automatiser la configuration de la supervision pour l’ensemble de nos hôtes via des playbooks idempotent (#teasing) !&lt;/p&gt;</description></item><item><title>[En bref] Désactiver IPv6 sur les Windows Server</title><link>https://blog.zwindler.fr/2015/11/14/reminder-desactiver-ipv6-sur-les-windows-server/</link><pubDate>Sat, 14 Nov 2015 11:30:12 +0000</pubDate><guid>https://blog.zwindler.fr/2015/11/14/reminder-desactiver-ipv6-sur-les-windows-server/</guid><description>&lt;img src="https://blog.zwindler.fr/2015/11/wikipedia_slash8.webp" alt="Featured image of post [En bref] Désactiver IPv6 sur les Windows Server" /&gt;&lt;p&gt;IPv6, c’est un standard qui devrait être correctement supporté aujourd’hui, et par tout le monde. On devrait même aller jusqu’à dire qu’on devrait &lt;a class="link" href="https://fr.wikipedia.org/wiki/%C3%89puisement_des_adresses_IPv4" target="_blank" rel="noopener"
&gt;arrêter d’utiliser IPv4 aujourd’hui&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Mais franchement, il faut le reconnaitre, attribuer des adresses sur 128 bits (donc 32 caractères héxa), c’est une vraie tannée pour les administrateurs systèmes (même si il y a des astuces pour réduire la taille des adresses) !&lt;/p&gt;
&lt;p&gt;Alors c’est vrai, c’est mal (car non pérenne), mais certains sont donc tentés de ne pas utiliser IPv6, voire même désactiver complément la fonctionnalité. &lt;strong&gt;&lt;em&gt;[Edit] Ça peut surtout bloquer certains composants et/ou provoquer des effets de bords difficilement décelables&amp;hellip; Autant vous le dire tout de suite, Microsoft n’approuve pas.[/Edit]&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="le-cas-windows-server"&gt;Le cas Windows Server
&lt;/h2&gt;&lt;p&gt;Même si vous n’utiliser pas IPv6, les serveurs ont souvent sur leur carte le double adressage. Ce n’est pas gênant tant que vous ne l’utilisez pas &amp;hellip; sauf pour les Windows Server en domaine Active Directory.&lt;/p&gt;
&lt;p&gt;Pour simplifier l’administration des DNS, les serveurs Windows dans un domaine sont automatiquement enregistrés dans le DNS fournit par les serveurs DC. Même les adresses IPv6. et des fois, ça provoque des effets de bord quand l’IPv6 répond en premier.&lt;/p&gt;
&lt;h2 id="comme-le-désactiver-"&gt;Comme le  désactiver ?
&lt;/h2&gt;&lt;p&gt;On peut donc honteusement vouloir désactiver IPv6, pour se simplifier la vie et éviter de polluer son DNS Active Directory. Mais &amp;hellip; décocher la case dans l’interface d’administration des connexions réseau &amp;hellip; ne sert à rien !&lt;/p&gt;
&lt;p&gt;La seule façon de le faire, c’est de modifier le registre avec regedit (en tant qu’administrateur bien entendu).&lt;/p&gt;
&lt;p&gt;Naviguer dans HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\TCPIP6\Parameters&lt;/p&gt;
&lt;p&gt;Avec un [clic droit], ajouter une nouvelle clé &lt;strong&gt;DisabledComponents&lt;/strong&gt; en type &lt;strong&gt;DWORD (32-bit)&lt;/strong&gt; et lui donner la valeur &lt;del&gt;0xFFFFFFFF (voir commentaires)&lt;/del&gt; 0xFF.&lt;/p&gt;
&lt;p&gt;[MAJ du 25/01]Ou alors vous pouvez créer un fichier « .reg » à exécuter sur la machine :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters]
&amp;#34;DisabledComponents&amp;#34;=dword:000000ff
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;[/MAJ]&lt;/p&gt;
&lt;p&gt;Au reboot, IPv6 sera totalement désactivé sur le serveur.&lt;/p&gt;
&lt;h2 id="aller-plus-loin"&gt;Aller plus loin
&lt;/h2&gt;&lt;p&gt;Si vous ne voulez pas le faire à la mimine, que vous avez un accès simple vers Internet et que vous n’avez pas peur de faire confiance aveuglément à Microsoft, le &lt;a class="link" href="https://support.microsoft.com/fr-fr/kb/929852" target="_blank" rel="noopener"
&gt;KB de Microsoft sur le sujet&lt;/a&gt; donne des boutons de paramétrages « one click » pour désactiver ou réactiver simplement IPv4 et/ou IPv6.&lt;/p&gt;</description></item><item><title>[Tutoriel] Shinken 2.4 sur CentOS/RHEL 7 – partie 3</title><link>https://blog.zwindler.fr/2015/09/22/tutoriel-shinken-2-4-sur-centosrhel-7-partie-3/</link><pubDate>Tue, 22 Sep 2015 16:32:00 +0000</pubDate><guid>https://blog.zwindler.fr/2015/09/22/tutoriel-shinken-2-4-sur-centosrhel-7-partie-3/</guid><description>&lt;img src="https://blog.zwindler.fr/2015/09/shinken.webp" alt="Featured image of post [Tutoriel] Shinken 2.4 sur CentOS/RHEL 7 – partie 3" /&gt;&lt;p&gt;Cet article fait parti d’une série d’articles (au moins 3) que je vais publier sur le sujet et que j’ai séparé pour les rendre un peu plus digestes. Je vous conseille quand même de ne pas en sauter pour bien comprendre de quoi on parle ;-) :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://blog.zwindler.fr/2015/09/22/tutoriel-shinken-2-4-sur-centosrhel-7-partie-1/" &gt;Partie 1 : Présentation de Shinken&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://blog.zwindler.fr/2015/09/22/tutoriel-shinken-2-4-sur-centosrhel-7-partie-2/" &gt;Partie 2 : Installation de Shinken 2.4 sur RHEL/CentOS 7&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://blog.zwindler.fr/2015/09/22/tutoriel-shinken-2-4-sur-centosrhel-7-partie-3/" &gt;Partie 3 : Configuration initiale de Shinken 2.4 sur RHEL/CentOS 7&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="les-modules"&gt;Les modules
&lt;/h2&gt;&lt;p&gt;L’ensemble des modules et en particulier le broker n’a donc aucun module d’activé. Or les interfaces graphiques sont gérées par des modules du broker pour ne citer qu’eux.&lt;/p&gt;
&lt;h3 id="les-modules-et-shinkenio"&gt;Les modules et shinken.io
&lt;/h3&gt;&lt;p&gt;Par convention (ce n’était pas forcément le cas dans les précédentes versions), la configuration des modules est définie dans des fichiers de configurations individuels qui seront stockés dans le sous dossier modules de &lt;strong&gt;/etc/shinken/&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;On peut trouver les fichiers liés aux modules dans le répertoire &lt;strong&gt;/var/lib/shinken/modules/&lt;/strong&gt; (par défaut, mais vous pouvez le modifier dans le fichier &lt;strong&gt;shinken.cfg&lt;/strong&gt; ou dans les « .ini » des démons).&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;cat /etc/shinken/modules/sample.cfg
# Here is a sample module that will do nothing :)
#define module{
# module_name module-sample
# module_type module-sample
# key1 value1
# key2 value2
ll /var/lib/shinken/modules
total 24
drwxr-xr-x 2 shinkn shinkn 4096 17 sept. 14:34 dummy_arbiter
drwxr-xr-x 2 shinkn shinkn 4096 17 sept. 14:34 dummy_broker
drwxr-xr-x 2 shinkn shinkn 4096 17 sept. 14:34 dummy_broker_external
drwxr-xr-x 2 shinkn shinkn 4096 17 sept. 14:34 dummy_poller
drwxr-xr-x 2 shinkn shinkn 4096 17 sept. 14:34 dummy_scheduler
-rw-r--r-- 1 shinkn shinkn 919 17 sept. 14:34 __init__.py
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Autant dire que pour l’instant on ne peut pas faire grand chose !&lt;/p&gt;
&lt;p&gt;C’est un choix technique qui a été fait à partir de la version 2 (si je ne m’abuse) et qui permet de n’avoir que ce dont on a vraiment besoin, ce qui est une très bonne pratique.&lt;/p&gt;
&lt;p&gt;Pour autant, pour éviter de trop alourdir le processus d’installation de multiples modules, l’équipe a mis au point un catalogue d’extensions qui permet d’installer les modules manquants à l’aide d’une simple ligne de commande, ce qui est très pratique.&lt;/p&gt;
&lt;p&gt;La première fois, il faut commencer par « initialise » notre Shinken 2.4, avec la commande suivante :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;shinken --init
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Le site &lt;a class="link" href="http://shinken.io/browse/modules/updated" target="_blank" rel="noopener"
&gt;shinken.io&lt;/a&gt; référence à date pas moins de 138 packages dont les fameux modules qui nous manquent.&lt;/p&gt;
&lt;h3 id="premier-module--les-logs-comme-nagioslog"&gt;Premier module : les logs comme nagios.log
&lt;/h3&gt;&lt;p&gt;Pour installer le module de log plat à la mode « Nagios », il faut installer simple-log.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;shinken install simple-log
Grabbing : simple-log
OK simple-log
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Pas mal hein?&lt;/p&gt;
&lt;p&gt;Si vous avez l’erreur suivante qui apparaît, c’est que vous n’avez pas fait la commande shinken init à l’étape précédente.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;shinken install simple-log
[1442761511] ERROR: [Shnken] Cannot load cli commands, missing paths or cli entry in the config
[1442761511] ERROR: [Shnken] CLI loading not done: missing configuration data. Please run --init
shinken --init
Creating ini section paths
Creating ini section shinken.io
Saving the new configuration file /root/.shnken.ini
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="installer-la-webui-linterface-graphique-officielle-du-projet"&gt;Installer la WebUI, l’interface graphique officielle du projet
&lt;/h3&gt;&lt;p&gt;Pour installer l’interface graphique « officielle » (aka la WebUI), il faut se rendre sur la page &lt;a class="link" href="http://shinken.io/package/webui2" target="_blank" rel="noopener"
&gt;suivante&lt;/a&gt; (et la documentation qui détaille sont installation sont disponibles &lt;a class="link" href="https://github.com/shinken-monitoring/mod-webui/wiki/Installation" target="_blank" rel="noopener"
&gt;ici&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Toutes les dépendances python peuvent être installées via pip et le fichier requirements.txt. Pour mongodb, je vous l’ai déjà fait installer un peu plus tôt donc ça devrait déjà être fait (enfin&amp;hellip; si vous avez suivi&amp;hellip; sinon :-p retournez à l’article précédent).&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;pip install -r https://raw.githubusercontent.com/shinken-monitoring/mod-webui/develop/requirements.txt
shinken install webui2
Grabbing : webui2
OK webui2
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Par défaut, le fichier de configuration &lt;strong&gt;webui2.cfg&lt;/strong&gt; est créé dans le dossier &lt;strong&gt;/etc/shinken/modules/&lt;/strong&gt; et les fichiers du modules ont été déposés dans &lt;strong&gt;/var/lib/shinken/modules/&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Pour que notre authentification par fichier &lt;strong&gt;htpasswd&lt;/strong&gt; soit prise en compte, il faut dé-commenter la ligne contenant le paramètre &lt;strong&gt;htpasswd_file&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;[Deprecated]Vous devriez aussi changer tout de suite le paramètre &lt;strong&gt;auth_secret&lt;/strong&gt; dans le fichier de configuration &lt;strong&gt;webui2.cfg&lt;/strong&gt;. Remplacez CHANGEME par la valeur que vous voulez.&lt;/p&gt;
&lt;p&gt;Historiquement il fallait changer soit même le paramètre &lt;strong&gt;auth_secret&lt;/strong&gt; dans le fichier de configuration mais cette option a été remplacée par un fichier autogénéré. Cette méthode est plus sécurisante car elle évite d’oublier de le faire ;-).&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;htpasswd_file /etc/shinken/htpasswd.users
[...]
# Authentication secret for session cookie
#auth_secret BOBLEPONGE
# ; CHANGE THIS or someone could forge cookies
auth_secret_file /var/lib/shinken/auth_secret
[...]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Pour l’instant, seule l’authentification par Apache htpasswd est activé (vu qu’on vient de le décommenter). On pourra en rajouter d’autres par la suite mais pour faire simple, on va juste y ajouter un compte pour commencer.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;htpasswd -c /etc/shinken/htpasswd.users admin
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Ensuite on démarre la base mongodb&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;systemctl enable mongod
systemctl start mongod
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="câbler-le-tout"&gt;Câbler le tout
&lt;/h3&gt;&lt;p&gt;On a installé deux modules, mais aucun des deux n’ont été reliés au broker : ils ne seront pas utilisés au démarrage. On modifie donc la configuration du broker en conséquence.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;vi /etc/shinken/brokers/broker-master.cfg
modules simple-log,webui2
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Pour plus de détails sur la configuration du broker, je vous renvoie vers la page &lt;a class="link" href="https://shinken.readthedocs.org/en/latest/08_configobjects/broker.html" target="_blank" rel="noopener"
&gt;broker&lt;/a&gt; de la documentation officielle.&lt;/p&gt;
&lt;p&gt;Redémarrez l’outil pour prendre en compte la modification de configuration et connectez vous à l’URL &lt;code&gt;http://@IP_shinken:7767&lt;/code&gt;&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;systemctl restart shinken
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2015/09/shinken2.avif%22"
loading="lazy"
&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Yata !&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2015/09/03_shinken.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Le dashboard. Mais pour l’instant il n’y a pas grand chose !&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="en-cas-de-problèmes"&gt;En cas de problèmes
&lt;/h2&gt;&lt;p&gt;Par défaut, les logs sont stockés dans le répertoire &lt;strong&gt;/var/log/shinken/&lt;/strong&gt;, avec un fichier par démon.&lt;/p&gt;
&lt;p&gt;Ils sont généralement assez détaillés et on peut moduler le niveau de détails dans les fichiers de configuration des démons que j’ai présenté un peu plus tôt.&lt;/p&gt;
&lt;p&gt;Dans le cas où la configuration (&lt;strong&gt;shinken.cfg&lt;/strong&gt; et tous les autres .cfg qui en découlent) contiendrait une erreur, l’arbiter plantera au démarrage et les informations sur son plantage seront contenues dans le fichier &lt;strong&gt;/tmp/bad_start_for_arbiter&lt;/strong&gt;. Ça peut être utile.&lt;/p&gt;
&lt;h2 id="aller-plus-loin"&gt;Aller plus loin
&lt;/h2&gt;&lt;p&gt;Ça y est. Votre nouvel outil de supervision fonctionne et vous disposez d’une interface graphique pour voir ce qu’il s’y passe.&lt;/p&gt;
&lt;p&gt;Voici quelques pistes pour réellement terminer le travail que vous venez de commencer :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;D’abord vous pourriez commencer par ajouter des plugins et quelques serveurs à votre configuration pour voir comment Shinken réagit quand on lui donne un peu de travail. Et pourquoi ne pas vous économiser du travail de configuration en utilisant &lt;a class="link" href="http://shinken.io/browse/packs/updated" target="_blank" rel="noopener"
&gt;les packs&lt;/a&gt;, dans ce but ultime d’automatiser toujours plus (pour travailler moins) ?&lt;/li&gt;
&lt;li&gt;Ensuite, vous pourriez ajouter des modules à la WebUI, comme par exemple &lt;a class="link" href="http://shinken.io/package/ui-graphite" target="_blank" rel="noopener"
&gt;ui-graphite&lt;/a&gt; ou &lt;a class="link" href="http://www.shinken.io/package/ui-pnp" target="_blank" rel="noopener"
&gt;ui-pnp&lt;/a&gt; pour ajouter la gestion des graphes dans votre WebUI.&lt;/li&gt;
&lt;li&gt;Enfin, vous pourriez vous pencher sur les aspects &lt;a class="link" href="https://shinken.readthedocs.org/en/latest/06_medium/high-availability.html" target="_blank" rel="noopener"
&gt;de haute disponibilité, de répartition de charge&lt;/a&gt; et de &lt;a class="link" href="https://shinken.readthedocs.org/en/latest/07_advanced/distributed-with-realm.html" target="_blank" rel="noopener"
&gt;gestion des royaumes&lt;/a&gt;, histoire de répondre à des problématiques plus complexe ?&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>