<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>CPAN on Zwindler's Reflection</title><link>https://blog.zwindler.fr/tags/cpan/</link><description>Recent content in CPAN on Zwindler's Reflection</description><generator>Hugo -- gohugo.io</generator><language>fr</language><copyright>Licensed under CC BY-SA 4.0</copyright><lastBuildDate>Wed, 29 Mar 2017 12:00:26 +0000</lastBuildDate><atom:link href="https://blog.zwindler.fr/tags/cpan/index.xml" rel="self" type="application/rss+xml"/><item><title>Utiliser le gestionnaire d’extension Perl CPAN derrière un proxy</title><link>https://blog.zwindler.fr/2017/03/29/utiliser-perl-cpan-derriere-proxy/</link><pubDate>Wed, 29 Mar 2017 12:00:26 +0000</pubDate><guid>https://blog.zwindler.fr/2017/03/29/utiliser-perl-cpan-derriere-proxy/</guid><description>&lt;img src="https://blog.zwindler.fr/2017/03/cpan.webp" alt="Featured image of post Utiliser le gestionnaire d’extension Perl CPAN derrière un proxy" /&gt;&lt;h2 id="aaaah-cpan-un-vrai-bonheur"&gt;Aaaah, CPAN, un vrai bonheur
&lt;/h2&gt;&lt;p&gt;Ceux qui me suivent savent que, bien qu’il m’arrive d’utiliser Perl de temps en temps (et même de coder un peu de Perl, ce qui m’a fait acheter Learning Perl et Programing Perl de chez O’Reilly), je passe surtout la plupart de mon temps à pester contre le CPAN (&lt;a class="link" href="https://blog.zwindler.fr/2010/09/08/installer-3-plugins-nagios-dans-eon-1-2-coupe-dinternet-level-2/" &gt;voir cet article où je détaille entièrement comment installer un simple plugin Nagios sans accès à Internet&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2016/11/cpan.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Car CPAN et les modules/dépendances Perl, c’est bien, mais c’est quand même mieux quand on a accès à Internet !&lt;/p&gt;
&lt;h2 id="pas-dinternet-dans-mon-dc-ou-presque"&gt;Pas d’Internet dans mon DC (ou presque)
&lt;/h2&gt;&lt;p&gt;Il n’est pas rare que je n’ai pas accès à Internet lorsque j’installe un serveur, et c’est généralement dans ce genre de cas qu’on essaye de trouver des bidouilles.&lt;/p&gt;
&lt;p&gt;Par exemple, dans les DC qui n’ont accès qu’à un proxy avec authentification NTLMv2 (Microsoft), je n’hésite pas à installer &lt;a class="link" href="http://cntlm.sourceforge.net/" target="_blank" rel="noopener"
&gt;cntlm&lt;/a&gt; (ou avant ntlmaps). C’est crade, mais ça me permet d’avoir mon proxy pour Yum, wget, etc&amp;hellip; qui ne seraient pas (ou mal) gérés autrement. Et ça m’a sauvé bien des fois !&lt;/p&gt;
&lt;p&gt;Dans le cas qui nous concerne dans cet article sur CPAN, j’ai découvert avec stupeur qu’il existe un « shell » CPAN, auquel on peut tout simplement ajouter une configuration particulière, notamment pour lui donner un proxy !&lt;/p&gt;
&lt;p&gt;Voilà de quoi régler une partie de mes problèmes !&lt;/p&gt;
&lt;p&gt;Pour activer le shell CPAN, deux méthodes (similaires) :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;perl -MCPAN -e shell
#ou
cpan
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="configurer-le-proxy-pour-cpan"&gt;Configurer le proxy pour CPAN
&lt;/h3&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;o conf init /proxy/
If you&amp;#39;re accessing the net via proxies, you can specify them in the
CPAN configuration or via environment variables. The variable in
the $CPAN::Config takes precedence.
&amp;lt;ftp_proxy&amp;gt;
Your ftp_proxy? [] @IP:&amp;lt;port&amp;gt;
&amp;lt;http_proxy&amp;gt;
Your http_proxy? [] @IP:&amp;lt;port&amp;gt;
&amp;lt;no_proxy&amp;gt;
Your no_proxy? [] @IP:&amp;lt;port&amp;gt;
Please remember to call &amp;#39;o conf commit&amp;#39; to make the config permanent!
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Et comme nous sommes disciplinés, nous n’oublierons pas d’enregistrer les modifications avec la commande indiquée plus haut&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;o conf commit
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="désactiver-le-proxy"&gt;Désactiver le proxy
&lt;/h3&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;o conf no_proxy 1
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Et on sauvegarde !&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;o conf commit
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="bonus-track--forcer-le-proxy-http-plutôt-que-ftp"&gt;Bonus track : forcer le proxy HTTP plutôt que FTP
&lt;/h3&gt;&lt;p&gt;Je me suis retrouvé avec CPAN qui essayait à un moment donner de passer par FTP pour télécharger les packages alors que je n’avais qu’un proxy HTTP. Et pour ce problème particulier, je suis tombé sur cette page sur serverrfault qui donne quelques clés pour s’en sortir :&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Simplest way of having it not use FTP is to shove HTTP URLs on the front of your urllist - or replace it completely like sebastionopilla said.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Pour afficher les URLs utilisées&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;o conf urllist
urllist
0 [http://example.org/]
1 [http://example.org/]
2 [http://example.org/CPAN/]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Exclure une URL de la configuration (un miroir par exemple)&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;o conf urllist unshift http://example.org/here/
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Pour tout vider&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;o conf urllist -
o conf urllist shift
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Source : &lt;a class="link" href="http://serverfault.com/questions/130690/force-cpan-to-download-via-http/292696" target="_blank" rel="noopener"
&gt;serverfault.com/questions/130690/force-cpan-to-download-via-http/292696&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Comment installer Shinken 2.4 hors ligne (sans accès à Internet)</title><link>https://blog.zwindler.fr/2016/11/02/installer-shinken-ligne-sans-acces-internet/</link><pubDate>Wed, 02 Nov 2016 15:11:10 +0000</pubDate><guid>https://blog.zwindler.fr/2016/11/02/installer-shinken-ligne-sans-acces-internet/</guid><description>&lt;img src="https://blog.zwindler.fr/2016/11/LogoShinken.webp" alt="Featured image of post Comment installer Shinken 2.4 hors ligne (sans accès à Internet)" /&gt;&lt;h2 id="pourquoi-installer-un-logiciel-et-notamment-shinken-hors-ligne-"&gt;Pourquoi installer un logiciel (et notamment Shinken) hors ligne ?
&lt;/h2&gt;&lt;p&gt;[Aparté] Pour ceux qui ne connaissent pas encore bien Shinken, je vous propose de lire mes &lt;a class="link" href="https://blog.zwindler.fr/recherche/?keyword=shinken" &gt;précédents articles sur le sujet&lt;/a&gt; et notamment celui où &lt;a class="link" href="https://blog.zwindler.fr/2015/09/22/tutoriel-shinken-2-4-sur-centosrhel-7-partie-1/" &gt;j’introduis le logiciel ainsi que ces fonctionnalités principales&lt;/a&gt;. [/Aparté]&lt;/p&gt;
&lt;p&gt;De plus en plus -même si ça fait bien longtemps que la tendance s’est installée- les packages (dépôts Debian like/RHEL/whatever) mais aussi les langages &amp;amp; les frameworks (&lt;a class="link" href="http://www.cpan.org/" target="_blank" rel="noopener"
&gt;perl&lt;/a&gt;, &lt;a class="link" href="http://pear.php.net/" target="_blank" rel="noopener"
&gt;pear (php)&lt;/a&gt;, &lt;a class="link" href="https://www.npmjs.com/" target="_blank" rel="noopener"
&gt;npmjs&lt;/a&gt;), voire même les logiciels vous simplifie la vie. On vous met à disposition un gestionnaire/binaire/ligne de commande pour télécharger de nouveaux modules/composants depuis un dépôt sur Internet, avec une gestion des dépendances et l’installation (voire compilation) automatisée.&lt;/p&gt;
&lt;p&gt;Et c’est vrai que c’est quand même super pratique.&lt;/p&gt;
&lt;p&gt;Qui n’a jamais pesté de ne pas avoir le CPAN de Perl à disposition ? Devoir télécharger manuellement sur le site CPAN.org puis compiler des modules selon un arbre de dépendances long comme le bras ? Et avec deux méthodes de compilation différentes (Make &amp;amp; Build) selon le module si possible !&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2016/11/cpan.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Pour ceux qui n’ont pas connus ce « fun ultime » je vous propose de jeter un œil à cet article où je récapitule &lt;a class="link" href="https://blog.zwindler.fr/2010/09/08/installer-3-plugins-nagios-dans-eon-1-2-coupe-dinternet-level-2/" &gt;comment installer sur EON et CentOS une sonde Nagios (oui, une seule) en 161 lignes de commande&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Pour autant, il n’est pas rare que les administrateurs réseaux du DataCenter, par souci de sécurité et respect des bonnes pratiques, refuse par défaut l’accès direct à Internet pour les serveurs. Dans le meilleur des cas, il existe des dépôts locaux qui sont le miroir de ce qu’on trouve sur Internet à un instant T, mais :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ils ne contiennent jamais l’exhaustivité des RPM/DEB/&amp;hellip;&lt;/li&gt;
&lt;li&gt;Les versions des packages évoluent tout le temps et garder un ensemble cohérent de tous les modules et leur dépendances et quasi impossible (notamment les rpm pour des modules PHP&amp;hellip; $*%$$*)&lt;/li&gt;
&lt;li&gt;On ne peut pas avoir l’ensemble des gestionnaires qui existent (rien que la courte liste que je cite plus haut, c’est compliqué)&lt;/li&gt;
&lt;li&gt;Dernier cas : il n’existe pas nécessairement de méthode pour stocker dans le DC une copie des modules&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Il faut donc s’y résigner : il arrive des fois où l’installation hors ligne de dépendances est malheureusement incontournable.&lt;/p&gt;
&lt;h2 id="le-cas-de-shinken"&gt;Le cas de Shinken
&lt;/h2&gt;&lt;p&gt;Il m’est arrivé à plusieurs reprises à devoir installer Shinken hors ligne dans des DC coupés d’Internet et a priori je ne suis pas le seul (quelques anciens collègues, un commentaire sur le blog, &amp;hellip;). Pour autant, de ce que j’ai pu voir, il n’existe pas dans la documentation (ou alors plus) qui mentionne la méthode pour le faire.&lt;/p&gt;
&lt;p&gt;Mais vous avez de la chance, la méthode existe !&lt;/p&gt;
&lt;p&gt;Je ne vais pas rentrer autant dans les détails de l’installation et de la configuration de Shinken. Cette partie est traitée de manière exhaustive dans les tutoriels précédemment publiés (&lt;a class="link" href="https://blog.zwindler.fr/2015/09/22/tutoriel-shinken-2-4-sur-centosrhel-7-partie-2/" &gt;ici&lt;/a&gt; puis &lt;a class="link" href="https://blog.zwindler.fr/2015/09/22/tutoriel-shinken-2-4-sur-centosrhel-7-partie-3/" &gt;ici&lt;/a&gt;). Pour autant, voici la marche à suivre lorsque Shinken fait appel à Internet et que vous souhaitez réaliser l’opération &lt;strong&gt;hors ligne&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id="pour-les-dépendances-rpm-via-yum"&gt;Pour les dépendances RPM via yum
&lt;/h2&gt;&lt;p&gt;Note : cette partie de l’article est applicable au delà de Shinken, je l’utilise tous les jours pour constituer mes bases de RPM pour l’ensemble des distributions et des logiciels que j’administre.&lt;/p&gt;
&lt;p&gt;Pour les dépendances RPM, 2 solutions :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Soit vous montez votre propre dépôt local, par exemple avec &lt;strong&gt;createrepo&lt;/strong&gt; et un serveur Apache. C’est très simple à mettre en place et c’est un bonne idée lorsque vous avez beaucoup de packages a installer, ou plusieurs version de distrib’ a administrer.&lt;/li&gt;
&lt;li&gt;Soit vous vous créez un dossier dans lequel vous récupérer tous les RPM et leurs dépendances. Vous copierez ce dossier sur le serveur où vous souhaitez installer Shinken.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Quoiqu’il arrive, vous devrez donc passer par la case « téléchargement manuel » de tous les RPM nécessaires.&lt;/p&gt;
&lt;h3 id="yumdownloader"&gt;yumdownloader
&lt;/h3&gt;&lt;p&gt;Dans le meilleur des cas, vous disposez d’un Linux de la même version et qui a un accès à Internet. Et là vous allez vous simplifier la vie avec le binaire &lt;strong&gt;yumdownloader&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Ce binaire fonctionne de la même manière que yum, à ceci près qu’il télécharge les packages au lieu de les installer. Vous n’aurez donc qu’a ajouter dans votre &lt;strong&gt;/etc/yum.repo.d&lt;/strong&gt;/ l’ensemble des dépôts qui seront nécessaires à l’installation de Shinken (probablement CentOS-Base et EPEL Release pour un CentOS), puis télécharger tous les RPMs dont vous avez besoin avec la commande :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;yum install yum-utils
mkdir shinken_deps &amp;amp;&amp;amp; cd shinken_deps
yumdownloader --resolve mon_package
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;A noter cependant, d’expérience le &lt;em&gt;&amp;ndash;resolve&lt;/em&gt; censé télécharger les dépendances du package en même temps est peu fiable. Vous aurez surement des dépendances manquantes à télécharger de manière complémentaire.&lt;/p&gt;
&lt;h3 id="a-la-mimine"&gt;A la mimine
&lt;/h3&gt;&lt;p&gt;Si vous n’êtes pas dans le cas cité plus haut, alors cette opération peut être fastidieuse. Elle va alors consister à taper dans votre moteur de recherche favori des mots clés du type « mon_package rpm el6 » (dans le cas d’un RHEL6 ou CentOS6), puis de télécharger la version qui y est disponible sur des sites comme &lt;em&gt;rpm.pbone.net&lt;/em&gt; et &lt;em&gt;&lt;a class="link" href="https://www.rpmfind.net" target="_blank" rel="noopener"
&gt;www.rpmfind.net&lt;/a&gt;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Et bien sûr, comme vous ne pouvez pas deviner aisément si les dépendances qui y sont affichées sont actuellement disponibles ou pas sur votre serveur, il y a un risque que ce soit une opération itérative, jusqu’à ce que vous ayez enfin toutes les dépendances pour tous les cas de figure.&lt;/p&gt;
&lt;p&gt;&amp;hellip;&lt;/p&gt;
&lt;p&gt;Et qu’il n’y ait pas de conflits entre versions de packages interdépendants&amp;hellip;&lt;/p&gt;
&lt;h3 id="installation"&gt;Installation
&lt;/h3&gt;&lt;p&gt;Votre base de RPM est enfin complète. Pour installer les RPMs nécessaires à Shinken !&lt;/p&gt;
&lt;h4 id="si-vous-avez-choisi-le-dépôt-local"&gt;Si vous avez choisi le dépôt local
&lt;/h4&gt;&lt;p&gt;Un simple ajout du dépôt sur le serveur vous permettra donc d’installer toutes les dépendances comme s’y vous étiez sur Internet&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;yum install package1 package2 ...
&lt;/code&gt;&lt;/pre&gt;&lt;blockquote&gt;
&lt;p&gt;Transparent !&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4 id="si-vous-avez-plutôt-une-clé-usbdvddisque-514-avec-toutes-les-dépendances-dessus"&gt;Si vous avez plutôt une clé USB/DVD/disque 5″1/4 avec toutes les dépendances dessus
&lt;/h4&gt;&lt;p&gt;Pendant longtemps, quand j’avais des RPMs à installer, je m&amp;rsquo;embêtais à les installer dans l’ordre de dépendance avec la commande &lt;strong&gt;rpm -hiv mon_package&lt;/strong&gt;. Et des fois je pestais parce que je ne l’avais pas fais dans le bon ordre&amp;hellip;&lt;br&gt;
Mais vous avez quand même de la chance, &lt;em&gt;yum&lt;/em&gt; est bien pensé. Il permet également d’installer des RPMs locaux et gère les dépendances de lui même, qu’elles soient sur déposés sur le serveur ou sur vos dépôts. Vous n’avez donc à vous soucier que des packages qui ne sont pas sur vos dépôts, &lt;em&gt;yum&lt;/em&gt; fera le tri parmi toutes les sources disponibles. Et ça simplifie grandement la vie.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;cd shinken_deps/
yum install *.rpm
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="installation-des-modules-python-via-pip-dont-shinken-lui-même"&gt;Installation des modules Python via pip (dont Shinken lui même)
&lt;/h2&gt;&lt;p&gt;Shinken étant codé majoritairement en python, vous ne serez donc pas surpris d’apprendre qu’il faut utiliser pip (ou pipy) pour installer des dépendances à Shinken, et même d’ailleurs Shinken lui même.&lt;/p&gt;
&lt;p&gt;Rappel des tutos précédents, pour installer Shinken sur un CentOS qui a accès au net, il faut « juste » faire&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;rpm -iUvh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
yum update
yum install python-pip
adduser shinken
pip install shinken
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Si vous avez quand même partiellement accès à Internet via un proxy, vous pourrez vous en sortir en indiquant dans la variable http&lt;strong&gt;s&lt;/strong&gt;_proxy l’URL du proxy HTTPS pour &lt;em&gt;pip&lt;/em&gt; (notez le S).&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;export https_proxy=http://@IP_proxy_https:8080/
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Mais dans le cas où vous êtes réellement coupé d’Internet et que vous devez récupérer des packages &lt;em&gt;pipy&lt;/em&gt; a priori, vous pourrez quand même le faire de la façon suivante :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Récupérer le tar.gz du module pipy sur le site Internet. Par exemple, pour Shinken, il existe &lt;a class="link" href="https://pypi.python.org/pypi/Shinken" target="_blank" rel="noopener"
&gt;une page dédiée sur pipy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Déposer le fichier shinken-2.4.x.tar.gz sur le serveur où on souhaite installer Shinken&lt;/li&gt;
&lt;li&gt;Installer le module pipy simplement à l’aide de la commande &lt;strong&gt;pip install shinken-2.4.x.tar.gz&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cette méthode est valable pour toutes les dépendances Python de Shinken, mais aussi pour Shinken lui même, comme on vient de le voir.&lt;/p&gt;
&lt;h2 id="pour-linstallation-des-modules-de-shinken-comme-webui2-par-exemple"&gt;Pour l’installation des modules de Shinken (comme webui2 par exemple)
&lt;/h2&gt;&lt;p&gt;Mais au delà de l’installation de Shinken, de ses dépendances RPMs et Python, il reste encore un dernier problème : les modules de Shinken !&lt;/p&gt;
&lt;p&gt;Les développeurs de Shinken ont mis à disposition sur &lt;strong&gt;shinken.io&lt;/strong&gt; une liste de modules (plus de 100 je crois) optionnels et qui ne sont pas inclus dans le logiciel de base. Pour autant, certains sont quand même très utiles voir carrément importants. C’est notamment le cas de &lt;a class="link" href="http://shinken.io/package/webui" target="_blank" rel="noopener"
&gt;la webui&lt;/a&gt; (interface graphique officielle de Shinken).&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2016/11/shinken_webui_offline.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Et pour vous simplifier la vie, l’installation de ces fameux « modules de shinken » se fait via une ligne de commande très simple, qui se charge de télécharger et d’installer pour vous les dépendances :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;shinken install webui
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;C’est une super idée, mais, là encore, sans Internet, impossible de télécharger ce module de cette manière.&lt;/p&gt;
&lt;p&gt;N’ayez crainte ! En réalité, bien qu’il ne soit pas (ou plus, ou je n’ai pas trouvé) documenté, il existe un mécanisme d’installation locale de la même manière qu’avec &lt;em&gt;yum&lt;/em&gt; ou &lt;em&gt;pip&lt;/em&gt;. Ouf !&lt;/p&gt;
&lt;h3 id="dépendances"&gt;Dépendances
&lt;/h3&gt;&lt;p&gt;La première étape consiste à récupérer les dépendances pipy listées dans le mod-webui/requirements.txt qu’on peut trouver dans le code source du module.&lt;/p&gt;
&lt;p&gt;Dans le cas de la webui, il s’agit (à date) de &lt;strong&gt;bottle==0.12.8, pymongo&amp;gt;=3.0.3, requests, arrow et passlib&lt;/strong&gt;. On les récupèrent donc tous sur pipy, et on les installe comme je viens de le décrire avec un &lt;strong&gt;pip install monmodule.tar.gz&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id="récupérer-les-sources-du-modules"&gt;Récupérer les sources du modules
&lt;/h3&gt;&lt;p&gt;Ensuite, on récupère les sources en un zip, qu’on dézippe sur le serveur. Pour le module &lt;strong&gt;webui&lt;/strong&gt;, les sources sont sur github &lt;a class="link" href="https://github.com/shinken-monitoring/mod-webui" target="_blank" rel="noopener"
&gt;github.com/shinken-monitoring/mod-webui&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;On peut enfin installer le module de Shinken à la main, à l’aide du flag &lt;strong&gt;&amp;ndash;local&lt;/strong&gt;&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;shinken install --local webui
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Facile, non ?&lt;/p&gt;
&lt;p&gt;;-)&lt;/p&gt;</description></item><item><title>Installer 3 plugins Nagios dans EON (Eyes of Network) 1.2, coupé d’Internet, level 2</title><link>https://blog.zwindler.fr/2010/09/08/installer-3-plugins-nagios-dans-eon-1-2-coupe-dinternet-level-2/</link><pubDate>Wed, 08 Sep 2010 12:16:33 +0000</pubDate><guid>https://blog.zwindler.fr/2010/09/08/installer-3-plugins-nagios-dans-eon-1-2-coupe-dinternet-level-2/</guid><description>&lt;img src="https://blog.zwindler.fr/2010/09/icone_EON.webp" alt="Featured image of post Installer 3 plugins Nagios dans EON (Eyes of Network) 1.2, coupé d’Internet, level 2" /&gt;&lt;p&gt;Maintenant que la première partie (check_esxi_wbem.py) s’est passée sans encombres, nous allons pouvoir passer à quelque chose d’un peu plus fun : &lt;a class="link" href="http://www.op5.com/support/documentation/how-to/400-monitoring-vmware-esx-3x-esxi-vsphere-4-and-vcenter-server" target="_blank" rel="noopener"
&gt;check_esx3&lt;/a&gt;. Je rappelle que cet article n’est utile que pour les gens qui se tirent vraiment une balle dans le pied, en utilisant pour des raisons divers un Eyes Of Network 1.2 (EON) et qui n’ont pas accès à Internet sur leur machine de supervision.&lt;/p&gt;
&lt;p&gt;Comme son nom l’indique, il s’agit d’un plugin Nagios pour superviser des produits VMware à partir de la version 3. Comme son nom ne l’indique pas, il s’agit d’un plugin en Perl. Joie et bonne humeur, CPAN.org nous voilà&amp;hellip;&lt;/p&gt;
&lt;p&gt;[Edit]Si vous avez une version de ce plugin antérieure à mai 2010, vous serez peut être heureux d’apprendre que la communauté à retravaillé ce script. Il semblerait que celui ci souffrait de redondances lors des requêtes. Après avoir jeté un œil aux remarques de la communauté, l’éditeur du script a effectué les modifications, et sur une machine peu performante, j’arrive à avoir des gains très significatifs entre les deux versions (2 secondes au lieu de 6 pour une sonde sur l’usage cpu/mémoire), ce qui la soulage beaucoup. Peut être que les gains ne seront pas aussi important pour des machines plus récentes, mais ça ne peut pas faire de mal de mettre ce plugin à jour&amp;hellip;[/Edit]&lt;/p&gt;
&lt;p&gt;Si vous êtes familier avec Perl, vous saurez que les scripts en Perl utilisent souvent des modules qui peuvent eux même dépendre d’autres modules, et ainsi de suite. Pour régler simplement ces problèmes de dépendance, il existe d’autres modules Perl qui permettent d’automatiser ce processus, en gérant récursivement les dépendances et en les téléchargeant sur Internet, un peu comme un gestionnaire de paquets. Seulement voilà, nous sommes offline, pas d’Internet sur notre serveur de supervision! Damnation&amp;hellip;&lt;/p&gt;
&lt;p&gt;Bon, commençons par le plus simple&amp;hellip; Il arrive que ces modules Perl nécessitent des paquets rpm pour fonctionner. Ici c’est le cas pour notre script, qui nécessite au moins les outils suivants :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;gcc&lt;/li&gt;
&lt;li&gt;libxml2&lt;/li&gt;
&lt;li&gt;libxml2-devel&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pour éviter de devoir se payer l’installation des dépendances des rpms à la main, je vous invite à vous reporter sur « l’astuce » du dépôt local de RPM, disponible &lt;a class="link" href="https://blog.zwindler.fr/2015/04/11/tutoriel-migrer-facilement-son-blog-de-wordpress-com-vers-un-hebergement-mutualise-ovh/" &gt;ici&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Ça, c’est fait. Passons maintenant aux modules Perl nécessaires qui ne sont pas préinstallés sur notre EON 1.2 :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Nagios::Plugin
&lt;ul&gt;
&lt;li&gt;Class::Accessor&lt;/li&gt;
&lt;li&gt;Config::Tiny&lt;/li&gt;
&lt;li&gt;Math::Calc::Units&lt;/li&gt;
&lt;li&gt;Params::Validate
&lt;ul&gt;
&lt;li&gt;Module::Build
&lt;ul&gt;
&lt;li&gt;ExtUtils::CBuilder&lt;/li&gt;
&lt;li&gt;ExtUtils::Manifest&lt;/li&gt;
&lt;li&gt;ExtUtils::ParseXS&lt;/li&gt;
&lt;li&gt;TestHarness&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Attribute::Handlers&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;VIPerlToolkit
&lt;ul&gt;
&lt;li&gt;XML::LibXML
&lt;ul&gt;
&lt;li&gt;XML::SAX&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Class:MethodMaker&lt;/li&gt;
&lt;li&gt;SOAP::Lite
&lt;ul&gt;
&lt;li&gt;URI&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Wa-hou&amp;hellip; Sacrée liste&amp;hellip; Vous aurez remarqué que j’ai respecté une hiérarchie entre les modules. Ce sont les niveaux de dépendances. Ainsi, XML::LibXML nécessite XML::SAX pour pouvoir fonctionner, et XML::SAX doit donc être installé avant XML::LibXML.&lt;br&gt;
La plupart des modules Perl listés ci-dessus sont disponibles en téléchargement sur le site Internet CPAN.org, et le VI Perl Toolkit est disponible sur le site de téléchargement de VMware.&lt;/p&gt;
&lt;p&gt;Je n’ai pas trouvé de moyen d’installer ces modules d’une seule commande sans passer par Internet. On aurait pu imaginer un genre de mécanisme de repository local, comme pour l’astuce avec Yum, qui se chargerait de tout installer d’un coup, où au moins une partie. J’ai quand même du mal à y croire et si quelqu’un à la solution, je serai très content d’avoir votre retour là dessus.&lt;/p&gt;
&lt;p&gt;A la place, j’ai du installer un à un tous les modules en respectant l’ordre des dépendances. Comme si ça ne suffisait pas, la procédure pour installer un module Perl diffère selon le module d’installation que son développeur à choisit -_-.&lt;/p&gt;
&lt;p&gt;Si vous trouvez un fichier Makefile.PL dans l’archive téléchargée, c’est que le module utilise le module Perl Makefile pour faire les installation :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;# tar xvzf [module_perl].tar.gz
# cd module_perl
# perl Makefile.PL
# make
# make test
# make install
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Mais si en revanche vous trouvez un fichier Build.PL, c’est que le module s’installe grâce au module Perl Module::Build (qui est d’ailleurs dans les listes des modules non présents de base dans EON)&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;# tar xvzf [module_perl].tar.gz
# cd module_perl
# perl Build.PL
# ./Build
# ./Build install
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Deux possibilités : soit vous le savez, soit vous tâtonnez comme un idiot jusqu’à trouver les bonnes commandes. J’ai choisi la seconde solution, je vous le déconseille, donc&amp;hellip;&lt;/p&gt;
&lt;p&gt;Une fois tous les modules installés, il ne reste plus qu’à utiliser ./check_esx3 en temps qu’utilisateur &lt;strong&gt;nagios&lt;/strong&gt;. Plus de détails sur l’utilisation de ce script franchement génial sur &lt;a class="link" href="http://www.op5.com/support/documentation/how-to/400-monitoring-vmware-esx-3x-esxi-vsphere-4-and-vcenter-server" target="_blank" rel="noopener"
&gt;le site d’OP5&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="la-même-chose-avec-un-centos-5"&gt;La même chose avec un CentOS 5
&lt;/h2&gt;&lt;p&gt;Sur un CentOS classique (avec le DVD par défaut), la liste des dépendances manquantes sans Internet est malheureusement plus longue. Jugez par vous même&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Builder-0.05&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Nagios-Plugin-0.36&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Math-Calc-Units-1.07&lt;/li&gt;
&lt;li&gt;Config-Tiny-2.14&lt;/li&gt;
&lt;li&gt;Params-Validate-1.06
&lt;ul&gt;
&lt;li&gt;Module-Build-0.4001
&lt;ul&gt;
&lt;li&gt;ExtUtils-ParseXS-3.15&lt;/li&gt;
&lt;li&gt;ExtUtils-MakeMaker-6.62&lt;/li&gt;
&lt;li&gt;ExtUtils-Manifest-1.60&lt;/li&gt;
&lt;li&gt;ExtUtils-CBuilder-0.280205
&lt;ul&gt;
&lt;li&gt;PathTools-3.33&lt;/li&gt;
&lt;li&gt;IPC-Cmd-0.78
&lt;ul&gt;
&lt;li&gt;Locale-Maketext-Simple-0.21&lt;/li&gt;
&lt;li&gt;Module-Load-Conditional-0.50
&lt;ul&gt;
&lt;li&gt;Module-Load-0.22&lt;/li&gt;
&lt;li&gt;Module-CoreList-2.68&lt;/li&gt;
&lt;li&gt;Params-Check-0.36
&lt;ul&gt;
&lt;li&gt;Perl-OSType-1.002
&lt;ul&gt;
&lt;li&gt;Test-Simple-0.98&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Test-Harness-3.25&lt;/li&gt;
&lt;li&gt;Module-Metadata-1.000009&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Class-Accessor-0.34&lt;/li&gt;
&lt;li&gt;Attribute-Handlers-0.93&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;SOAP-Lite-0.714&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;URI-1.60&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Class-MethodMaker-2.18&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;XML-LibXML-2.0002&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;XML-SAX-0.99
&lt;ul&gt;
&lt;li&gt;XML-SAX-Base-1.08&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Module-Implementation-0.06&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Try-Tiny-0.11&lt;/li&gt;
&lt;li&gt;Test-Fatal-0.010&lt;/li&gt;
&lt;li&gt;Test-Requires-0.06&lt;/li&gt;
&lt;li&gt;Module-Runtime-0.013&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pour le fun, voici ma « procédure d’installation » hors ligne pour ce plugin (160 lignes, quand même !).&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;for i in `ls -1`; do tar xzf $i; done
/Builder-0.05
perl Makefile.PL
make
make install
cd ../ExtUtils-MakeMaker-6.62
perl Makefile.PL
make
make install
cd ../PathTools-3.33
perl Makefile.PL
make
make install
cd ../Test-Simple-0.98
perl Makefile.PL
make
make install
cd ../Perl-OSType-1.002
perl Makefile.PL
make
make install
cd ../Locale-Maketext-Simple-0.21
perl Makefile.PL
make
make install
cd ../Params-Check-0.36
perl Makefile.PL
make
make install
cd ../Module-Load-0.22
perl Makefile.PL
make
make install
cd ../Module-CoreList-2.68
perl Makefile.PL
make
make install
cd ../ExtUtils-Manifest-1.60
perl Makefile.PL
make
make install
cd ../Module-Load-Conditional-0.50
perl Makefile.PL
make
make install
cd ../IPC-Cmd-0.78
perl Makefile.PL
make
make install
cd ../ExtUtils-CBuilder-0.280205
perl Makefile.PL
make
make install
cd ../ExtUtils-ParseXS-3.15
perl Makefile.PL
make
make install
cd ../Attribute-Handlers-0.93
perl Makefile.PL
make
make install
cd ../Math-Calc-Units-1.07
perl Makefile.PL
make
make install
cd ../Config-Tiny-2.14
perl Makefile.PL
make
make install
cd ../Class-Accessor-0.34
perl Makefile.PL
make
make install
cd ../URI-1.60
perl Makefile.PL
make
make install
cd ../SOAP-Lite-0.714
perl Makefile.PL
make
make install
cd ../Class-MethodMaker-2.18
perl Makefile.PL
make
make install
cd ../XML-SAX-Base-1.08
perl Makefile.PL
make
make install
yum install libxml2 libxml2-devel
cd ../XML-LibXML-2.0002
perl Makefile.PL
make
make install
cd ../XML-NamespaceSupport-1.11
perl Makefile.PL
make
make install
#ou yum install perl-XML-NamespaceSupport.noarch
cd ../XML-SAX-0.99
perl Makefile.PL
make
make install
cd ../Test-Harness-3.25
perl Makefile.PL
make
make install
cd ../Module-Metadata-1.000009
perl Makefile.PL
make
make install
cd ../Try-Tiny-0.11
perl Makefile.PL
make
make install
cd ../Test-Fatal-0.010
perl Makefile.PL
make
make install
cd ../Test-Requires-0.06
perl Makefile.PL
make
make install
cd ../Nagios-Plugin-0.36
perl Makefile.PL
make
make install
cd ../Archive-Tar-2.02
perl Makefile.PL
make
make install
cd ../ExtUtils-Install-2.04
perl Makefile.PL
make
make install
cd ../Module-Build-0.4001
perl Makefile.PL
make
make install
cd ../Module-Runtime-0.013
perl Makefile.PL
./Build
./Build install
cd ../Module-Implementation-0.06
perl Makefile.PL
make
make install
cd ../Params-Validate-1.06
perl Build.PL
./Build
./Build install
yum install perl-Crypt-SSLeay.x86_64
cd ..
tar xzf VMware-vSphere-SDK-for-Perl-4.0.0-161974.x86_64.tar.gz
cd vmware-vsphere-cli-distrib/
perl Makefile.PL
make
make install
cd ..
#necessite aussi le module perl UUID (prérequis, pas optionnel) mais fonctionne quand même sans
tar xzf check_vmware_api-1aae4f6.tar.gz &amp;amp;&amp;amp; check_vmware_api-1aae4f6
&lt;/code&gt;&lt;/pre&gt;</description></item></channel></rss>