18

Mise à jour automatique d’un Ubuntu Server

Pour ceux qui souhaitent, comme moi, tenir à jour leur serveur domestique, tournant sur Ubuntu Server (ou sur n’importe quel distribution dérivée de Debian, j’imagine) sans pour autant devoir faire les upgrade à la main, voici ce qu’il faut faire:

  1. Il faut créer un fichier qui contiendra les commandes pour faire la mise à jour et qui sera exécuter périodiquement:
    sudo vim /usr/local/bin/cron_upgrade
  2. Appuyez sur i pour vous mettre en mode « insertion », puis collez le texte suivant:
    #/bin/bash
    # Update, upgrade and dist-upgrade and check if reboot is required: /usr/local/bin/cron_update
    # Must be executed by root or by root crontab.
    /usr/bin/apt-get clean
    /usr/bin/apt-get update
    /usr/bin/apt-get -y upgrade
    /usr/bin/apt-get -y dist-upgrade
    /usr/bin/find /var/cache/apt/archives/linux-image* -exec /sbin/reboot {} \;
  3. Sauvegardez et quitter vim en tapant Echap puis :x (ce n’est pas un smiley !)
  4. Il faut maintenant rendre le fichier exécutable en tapant:
    sudo chmod +x /usr/local/bin/cron_upgrade
  5. Il ne nous reste plus qu’à exécuter ce fichier périodiquement. Pour cela, nous allons créer un cron:
    sudo crontab -e
  6. Ajoutez la ligne suivante (si vous voulez que cela s’exécute tous les jours à 3h30:
    30 03 * * * /usr/local/bin/cron_upgrade

Ce script a la particularité de faire rebooter le serveur si un nouveau noyau vient d’être installé. Si vous ne voulez pas qu’il reboot automatiquement, supprimez ou commentez (avec un dièse) la dernière ligne.

J’ai récupéré ce script sur le forum ubuntu (merci kagou) mais je l’ai un peu modifié.

Attention, ce script n’est absolument pas conseillé pour des serveurs de productions. je l’utilise uniquement sur un serveur domestique (chez moi, donc). La mise à jour et le reboot automatique d’un serveur pouvant provoquer des disfonctionnements impossible à prévoir (surtout si vous avez modifié à la main certains fichiers de configuration)

18 Comments

  1. Bien que je loue l’intention, et que ça soit utile pour certaines personnes, je ne pourrai jamais installer, sur un de mes serveurs en production, un truc qui:
    – installe des softs (critiques) avec peut-être des changements de configuration (critiques)
    – le redémarre sans que je ne sois là (avec le risque qu’un truc rate au démarrage des serveurs logiciels, donc un joli downtime devant soi)

    Mais je répète, si ça convient à certaines personnes, tant mieux :-)

  2. Bonjour,

    l’automatisation des mises à jour est sympathique, mais comme Chistophe, je déconseille fortement cette pratique.

    Le fait de répondre « oui » via l’option « -y » à toutes les questions suffit à la rendre assez dangereuse : on peut perdre un fichier de configuration, rendre indisponible un service …

    Dernier point : le redémarrage. D’expérience, on ne sait jamais si une machine est capable de redémarrer dans le même état qu’on l’a laissée ….

    Tu as certes précisé « serveur domestique », mais même dans ce cas, c’est dommage de perdre du temps à cause d’une mauvaise réponse à une question.

    Mettre à jour un serveur n’est pas une tâche à prendre à la légère : il vaut mieux se fixer un planning, par exemple « toutes les semaines », et être devant sa console répondre aux questions et vérifier que le système redémarre bien.

  3. Pour les raisons citées par les commentaires précédents, j’utilise le programme nommé con-apt (dispo dans les dépôts).

    Il vérifie régulièrement (tous les jours pour moi) la disponibilité de nouvelles mises à jour, et télécharge les paquets correspondants (sans les installer). Il m’envoie ensuite un rapport par e-mail.

    S’il me dit que j’ai des mises à jour à faire, je me connecte en ssh et les fais manuellement, ce qui permet de faire face à d’éventuels problèmes.

  4. Bon, je confirme que ce n’est pas un bonne chose d’auto-installer les mise à jour sans vérifier. Par contre, au lieu de ré-inventer la roue, il y a un certain nombre de packages disponibles dans les dépôts officiel qui peuvent faire cela pour toi sans peine :
    * cron-apt (cité plus haut)
    * apticron + apt-listchanges

  5. Tout a été dit au dessus. Ce n’est pas une bonne chose de faire des mises à jour de serveur automatiquement et le jour où on le sait, il est trop tard… Et c’est là qu’on voit que les sauvegardes ne sont pas correctes…. Et c’est le début des enm….

  6. Comme indiqué dans la première phrase de ce mail, je parle d’un serveur domestique, un serveur destiné à partager pour tout le réseau de la maison des musiques, vidéos, etc… Bien évidemment, c’est totalement hors de question que d’utiliser cette pratique pour un serveur en production pour une société par exemple… mais qui installe Ubuntu Server pour un vrai serveur de production ?

  7. Juste comme ça, en passant, mettre une ligne dans un crontab à trois heures du matin est une mauvaise idée.

    Je vous laisse cherche un peu pourquoi ;)

  8. Salut
    Ton script pose un probleme

    si tu ajoute cette ligne :

    find /var/cache/apt/archives/linux-image* -exec /sbin/reboot {} \;

    Après une mise a jour, ton serveur redemarrera tous les jours, ce qu’il faut que tu fasse c’est supprimer tous les fichier linux-image* s’ils existent puis si la suppression a eu lieu redemarrer
    if ls /var/cache/apt/archives/linux-image* ; then

    rm /var/cache/apt/archives/linux-image* -exec /sbin/reboot {}
    fi

  9. correction :

    if ls /var/cache/apt/archives/linux-image* ; then

    rm /var/cache/apt/archives/linux-image*
    /sbin/reboot
    fi

  10. yurek, le apt-get clean, supprime déjà tout en début de script.

    Yannick LM, si c’est le changement d’heure, je ne vois pas le problème. Au pire ca s’execute 2 fois ou pas du tout, non ?

  11. > mais qui installe Ubuntu Server pour un vrai serveur de production ?

    Amen, OVH, … je vous rappelle que Ubuntu, même si ils font du bon boulot (parce qu’ils ont des sous aussi, hein), est basé sur une debian, qui est très appréciée (je l’utilise au taf)

    Je pense que je n’aurais aucune hésitation a passer nos serveur de debian à ubuntu… si j’avais le temps ;)

    En plus les version LTS offrent 6 ans de mises à jour de sécurité, d’ici là on le temps 2 fois de changer de serveur !

  12. Mais je confirme, ce script est une très mauvaise idée, même sur un serveur à la maison… allez ca prend 5minutes de faire les mises à jour !

  13. ah, ils ont trouvé ;)

    > Au pire ca s’execute 2 fois ou pas du tout, non ?

    Certes, c’est juste que c’est bien d’être conscient de ce petit effet.
    (Et mettre la ligne à 3h30 permet de ne plus se poser de questions, pour pas cher, en plus)

  14. En plus du fait qu’automatiser les mises à jour est une mauvaise chose, est-ce que ça vaut bien le coup de se prendre la tete pour une machine qui n’est pas censée avoir accès direct au net et qui donc est moins vulnérable qu’un serveur de prod ?

    Pour une machine qui doit faire tourner a tout casser un vls et/ou un mpd avec qques partages samba, je vois mal l’interet de psychoter sur les mises à jour :-)

  15. Pour ma part je trouve tout le monde bien sévère…si on dit que linux est stable, pourquoi serait ce un « si grand risque » de faire ces mises à jour comme ca sur un petit serveur perso? pour peu qu’on se contente des maj de sécurité, le risque me parait plus que réduit ( jamais planté une maj sur mes 2 pcs).
    et puis au pire on risque une soirée à debugger un probleme (si ca plante) et on gagne la tranquilité d’avoir son server à jour des patchs de sécurité.

    pour le « oui à tous », c’est ce que font les users non informaticien de toute maniere :-)

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *