{"id":462,"date":"2011-05-02T14:58:26","date_gmt":"2011-05-02T12:58:26","guid":{"rendered":"http:\/\/stephane.weblog.starend.org\/?p=462"},"modified":"2011-05-02T14:58:26","modified_gmt":"2011-05-02T12:58:26","slug":"mise-a-jour-reguliere-debianubuntu-via-la-supervision","status":"publish","type":"post","link":"http:\/\/stephane.weblog.starend.org\/?p=462","title":{"rendered":"Mise \u00e0 jour r\u00e9guli\u00e8re Debian\/Ubuntu via la supervision"},"content":{"rendered":"<h2>Objectif :<\/h2>\n<p>Il y a plusieurs fa\u00e7ons de d\u00e9charger de l&rsquo;administrateur la mise \u00e0 jour des serveurs Linux Debian et Ubuntu, et ce de fa\u00e7on automatique et r\u00e9guli\u00e8re.<\/p>\n<p>On peut utiliser le <em>CRON<\/em>, en veillant \u00e0 supprimer le retour texte des commandes si on ne veut pas recevoir un message \u00e0 chaque fois que la t\u00e2che <em>CRON<\/em> est lanc\u00e9e. Lors d&rsquo;une mise \u00e0 jour, tous les serveurs envoient un message&#8230;<\/p>\n<p>On peut aussi utiliser un serveur qui centralise le lancement des commandes (via <em>CRON<\/em>) sur les diff\u00e9rents serveurs et remonte le r\u00e9sultat \u00e0 chaque fois. On re\u00e7oit donc un message r\u00e9guli\u00e8rement.<\/p>\n<p>Une autre solution et d&rsquo;utiliser la supervision. Celle-ci v\u00e9rifier tr\u00e8s r\u00e9guli\u00e8rement certains services, ajoutons aux checks la mise \u00e0 jour du syst\u00e8me. En plus, quand \u00e7a merde on est tout de suite pr\u00e9venu par les circuits d&rsquo;alerte de la supervision.<\/p>\n<p><em>Nagios<\/em> (et les outils qui utilisent la m\u00eame base) permettent d&rsquo;utiliser \u00e0 distance un agent <em>NRPE<\/em> pour interroger des \u00e9tats internes \u00e0 un serveur (donc non accessible via le r\u00e9seau). Toutes sortes de choses peuvent \u00eatre interrog\u00e9 pourvu qu&rsquo;il existe un plugin correspondant. Et si le plugin manque, on peut faire son propre script. C&rsquo;est ce qui est r\u00e9alis\u00e9 ici.<\/p>\n<p>Techniquement, que ce soit via un plugin sur le r\u00e9seau ou via NRPE, un test remonte une valeur num\u00e9rique de retour traduisant l&rsquo;\u00e9tat de r\u00e9ussite du test, et un texte informatif. Les \u00e9tats num\u00e9riques sont au nombre de 4 et correspondent aux \u00e9tats : <em>OK<\/em>, <em>Warning<\/em>, <em>Critical<\/em>, et <em>Unknown<\/em>.<\/p>\n<p>Volontairement, la mise \u00e0 jour se contente d&rsquo;un <em>safe-upgrade<\/em>, c&rsquo;est \u00e0 dire sans mise \u00e0 jour qui n\u00e9cessite une modification des paquets en d\u00e9pendance (impact potentiel fort du syst\u00e8me et des services). Cela entra\u00eene que si une mise \u00e0 jour (noyau par exemple) n\u00e9cessite plus que le le mode <em>safe-upgrade<\/em>, tous les serveurs seront en rouge sur la supervision. On contr\u00f4le ainsi parfaitement ces mises \u00e0 jours qui peuvent poser probl\u00e8me&#8230;<\/p>\n<p><!--more--><\/p>\n<h2>Installation :<\/h2>\n<p>Sur chaque serveur, il faut installer au minimum le paquet <em>nagios-nrpe-server<\/em>, c&rsquo;est le d\u00e9mon qui va permettre \u00e0 distance de lancer le script de mise \u00e0 jour.<\/p>\n<p>V\u00e9rifier aussi que les mises \u00e0 jours sont fonctionnelles manuellement.<\/p>\n<h2>Droits SUDO :<\/h2>\n<p>Par d\u00e9faut, le script du plugin va tourner sous le compte <em>Nagios<\/em>. Ca n&rsquo;est pas suffisant pour r\u00e9aliser la mise \u00e0 jour du syst\u00e8me, on fait dont lancer ce script via le m\u00e9canisme du <em>SUDO<\/em>. En fait, le script se relance lui-m\u00eame via <em>SUDO<\/em>.<\/p>\n<p>Si <em>SUDO<\/em> n&rsquo;est pas installer, il est n\u00e9cessaire :<\/p>\n<pre>aptitude install sudo<\/pre>\n<p>Ajouter au fichier <em>\/etc\/sudoers<\/em> :<\/p>\n<pre>nagios ALL=(ALL) NOPASSWD: \/usr\/lib\/nagios\/plugins\/check_update<\/pre>\n<h2>Script :<\/h2>\n<p>cr\u00e9er le fichier <em>\/usr\/lib\/nagios\/plugins\/check_update<\/em> (par exemple) :<\/p>\n<pre>#!\/bin\/bash\nif [ \"$(id | grep root)\" == \"\" ]\nthen sudo $0\nexit $?\nfi\n\nUPDATE=\"$(aptitude update 2&gt;&amp;1)\"\nUPDATE_RT=$?\nUPDATE_ERR=\"$(echo $UPDATE | grep Err | wc -l)\"\n[ \"$UPDATE_ERR\" != \"0\" ] &amp;&amp; echo \"CRITICAL UPDATE - Fail to update from mirror!\" &amp;&amp; exit 2\n[ \"$UPDATE_RT\" != \"0\" ] &amp;&amp; echo \"WARNING UPDATE - Fail to update!\" &amp;&amp; exit 1\necho -n \"OK UPDATE - \"\n\nUPGRADE=\"$(aptitude safe-upgrade -y 2&gt;&amp;1 | grep upgraded | grep newly)\"\nUPGRADE_RT=$?\n[ \"$UPGRADE_RT\" != \"0\" ] &amp;&amp; echo \"WARNING UPGRADE - Fail to upgrade!\" &amp;&amp; exit 1\nUPGRADE_CODE=$(echo $UPGRADE | cut -d ' ' -f 11)\n[ \"$UPGRADE_CODE\" != \"0\" ] &amp;&amp; echo \"CRITICAL UPGRADE - Fail to upgrade some packages!\" &amp;&amp; exit 2\n\n# 0 packages upgraded, 0 newly installed, 0 to remove and 0 not upgraded.\necho \"OK $UPGRADE\"<\/pre>\n<p>Le rendre ex\u00e9cutable :<\/p>\n<pre>chmod 755 \/usr\/lib\/nagios\/plugins\/check_update<\/pre>\n<h2>Ajout \u00e0 la configuration NRPE :<\/h2>\n<p>On ajoute la commande utilisable \u00e0 distance via NRPE, ajouter dans le fichier <em>\/etc\/nagios\/nrpe_local.cfg<\/em> la ligne :<\/p>\n<pre>command[check_update]=\/usr\/lib\/nagios\/plugins\/check_update<\/pre>\n<h2>Utilisation \u00e0 distance :<\/h2>\n<p>Sur le serveur de supervision ou via un relais NRPE, on peut lancer le test via la commande :<\/p>\n<pre>\/usr\/lib\/nagios\/plugins\/check_nrpe -H serveur -c check_update<\/pre>\n<p>Et on peut l&rsquo;utiliser dans <em>Nagios<\/em>!<\/p>\n<p>C&rsquo;est termin\u00e9 :-)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Objectif : Il y a plusieurs fa\u00e7ons de d\u00e9charger de l&rsquo;administrateur la mise \u00e0 jour des serveurs Linux Debian et Ubuntu, et ce de fa\u00e7on automatique et r\u00e9guli\u00e8re. On peut utiliser le CRON, en veillant \u00e0 supprimer le retour texte des commandes si on ne veut pas recevoir un message \u00e0 chaque fois que la &hellip; <a href=\"http:\/\/stephane.weblog.starend.org\/?p=462\" class=\"more-link\">Continuer la lecture de <span class=\"screen-reader-text\">Mise \u00e0 jour r\u00e9guli\u00e8re Debian\/Ubuntu via la supervision<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[43,10,11,14,24,26],"tags":[73,265,399,400],"_links":{"self":[{"href":"http:\/\/stephane.weblog.starend.org\/index.php?rest_route=\/wp\/v2\/posts\/462"}],"collection":[{"href":"http:\/\/stephane.weblog.starend.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/stephane.weblog.starend.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/stephane.weblog.starend.org\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/stephane.weblog.starend.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=462"}],"version-history":[{"count":0,"href":"http:\/\/stephane.weblog.starend.org\/index.php?rest_route=\/wp\/v2\/posts\/462\/revisions"}],"wp:attachment":[{"href":"http:\/\/stephane.weblog.starend.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=462"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/stephane.weblog.starend.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=462"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/stephane.weblog.starend.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=462"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}