Debian 11 ("Bullseye") a été releasé le 14 août 2021!

Voici des notes et références pour la mise à jour.

Sommaire des changements

Les changements importants de Bullseye sont bien documentés ici (voir aussi un survol dans https://michael-prokop.at/blog/2021/05/27/what-to-expect-from-debian-bullseye-newinbullseye/), mais on peut noter rapidement:

Le manuel de mise à jour inclus également les enjeux majeurs de mise à jour.

Upgrade process

Depuis les mises à jour à Lenny, des procédures détaillées sont maintenus par Koumbit, en parallèle avec la documentation officielle. La procédure de BusterUpgrade a servi de base à celle de Bullseye ici.

Notez aussi que notre documentation vise principalement les serveurs. Par exemple, nous suivons la procédure de temps mort minimal. La procédure devrait tout de même pouvoir être utilisée pour les desktops.

Attention: Selon l'aide Debian pour la mise à niveau, quelques changements à l'affichage peuvent survenir:

Si vous utilisez le système depuis la console locale, il est possible qu'à
certains moments de la mise à niveau la console passe à une vue différente,
et que la mise à niveau du système ne soit plus observable. Cela peut par
exemple être le cas pour les systèmes qui ont une interface graphique, quand
le gestionnaire de session est relancé.

Pour revenir à la console traitant le processus de mise à niveau, utilisez
les touches Ctrl+Alt+F1 (si vous avez une interface de connexion graphique)
ou Alt+F1 (si vous avez une console texte locale) pour revenir au terminal
virtuel 1. Remplacez F1 avec la touche Fx où x correspond au numéro du terminal
sur lequel se déroule la mise à niveau. Vous pouvez aussi utiliser Alt+flèche
gauche ou Alt+flèche droite pour passer d'un terminal en mode texte à un autre.

Pour éviter les problèmes que ça peut causer, il est donc important d'utiliser tmux (ou screen) durant le processus d'upgrade.

Normalement, dans les premiers cycles de mise à jour, on documente surtout les problèmes avec les différents packages ensuite, on revoit la procédure de mise à jour pour de l'optimisation.

Pre-upgrade

This section is now automated by a bolt task. You should use the task instead of running the commands listed below manually:

bolt task run bolt::debian_upgrade --targets foo.koumbit.net release=bullseye stage=prep

Avoid points 2-4 for office machines

  1. Take a look at this page's Problèmes rencontrés section to spot which applications will possibly have issues with the upgrade.

  2. inform users
  3. check to make sure the backup job will not start while the upgrade takes place!
    • grep when /etc/backupninja.conf
  4. check backups on backup server. If the client's backups aren't on our server, make sure we have access to it so we can retrieve it if needed.
  5. (Si c'est une node Ganeti)

    • Pour simplifier l'upgrade, on recommande fortement de mettre à jour ganeti avant de commencer la mise à jour de l'OS. On utilise généralement les packages buster-backports pour avoir la version de buster avant de passer l'OS à cette version là

    • Important: pour les nodes Ganeti, voir GanetiConfiguration#Mise_.2BAOA_jour

    • Attention: pour l'upgrade à bullseye il faut absolument retirer les packages de ganeti 2.16 avant de faire l'upgrade d'OS. voir la commande dans la documentation de mise à jour de ganeti.

  6. Run (as root) in tmux and record the session
    • ttyrec -e tmux /var/log/upgrade-bullseye.ttyrec
      
  7. Run puppet once to see if there's any outstanding issues. If so, try to fix them.
    • puppet agent -t
      
  8. backup configuration:
    • NEXT_RELEASE=bullseye
      cd /etc; git tag pre-${NEXT_RELEASE}
      git gc --prune # make /etc smaller for backup
      tar cfz /var/backups/pre-${NEXT_RELEASE}-backup.tgz /etc /var/lib/dpkg /var/lib/apt/extended_states /var/lib/aptitude/pkgstates
      dpkg --get-selections "*" > /var/backups/dpkg-selections-pre-${NEXT_RELEASE}.txt
      chmod 0600 /var/backups/pre-${NEXT_RELEASE}-backup.tgz /var/backups/dpkg-selections-pre-${NEXT_RELEASE}.txt
      
  9. Put servers in maintenance in Icinga.
  10. If the server is a physical machine, make sure it doesn't host netboot0 (in case a problem happens, you wouldn't be able to netboot). If it does host netboot, move netboot0 on another node (see GanetiMaintenance#Changer_une_instance_de_node)

Prepare and check system

This section is now automated by a bolt task. You should use the task instead of running the commands listed below manually:

bolt task run bolt::debian_upgrade --targets foo.koumbit.net release=bullseye stage=prep

Note that you only need to run the task once. The information is repeated here since the task renders two sections of this page obsolete.

  1. disable puppet, pinning and check for packages on hold or broken
    • puppet agent --disable "upgrading system to bullseye" # Disable puppet so it won't overwrite apt's config while we upgrade:
      rm /etc/apt/preferences /etc/apt/preferences.d/* #  Check for pinned (on hold) packages, and possibly disable
      rm /etc/apt/sources.list.d/testing.list # or other similar backports or sources from later releases
      apt-mark showhold
      dpkg --audit   # searches for  packages  that  have been installed only partially on your system or that have missing, wrong or obsolete control data or files. dpkg will suggest what to do with them  to get them fixed.
      
      

  1. Run any pending upgrade:
    • apt update && apt -y upgrade
      
    • En cas de warning de type --force-yes is deprecated, use one of the options starting with --allow instead, vérifier si un fichier from_puppet est présent dans /etc/apt/apt.conf.d/ avec une option APT::Get::force-yes true;

      Si tel est le cas, commenter la ligne. Cela provoque un warning APT dans icinga (unhandled)

      Ces configurations ne sont pas dans puppet. Il y a un billet dans redmine à ce sujet: #33642.

Preparing sources.list

  1. Change the security source format. This is needed specifically for bullseye since the format changes for this release.

    • sed -i 's#\(security\.debian\.org\)/ #\1/debian-security #;s#bullseye/updates#bullseye-security#' /etc/apt/sources.list /etc/apt/sources.list.d/*
      
  2. This mostly means changing buster to bullseye.

    • sed -i 's/buster/bullseye/g' /etc/apt/sources.list /etc/apt/sources.list.d/*
      rm /etc/apt/sources.list.d/buster-backports.list
      

      Note that in some cases, additional sources are defined in /etc/apt/sources.list.d and that you should review these sources to ensure they are still relevant:

      ls /etc/apt/sources.list.d
      

      (TODO: this is now fully managed by puppet.. maybe we can drop this verification?) we want to keep the following APT repository sources:

      /etc/apt/sources.list.d/aegir-stable.list
      /etc/apt/sources.list.d/koumbit.list
      

Upgrading the packages

  1. on physical servers: make sure the serial console works

  2. Update the package list and check disk space:
  3. Download packages:
    • apt -y -d upgrade && apt -y -d dist-upgrade
      
  4. Warn users of potential downtime, if relevant
    • look at the list of packages downloaded above to see if any key service may be disrupted

  5. preseed some answers:
    • debconf-set-selections <<EOF
      console-data    console-data/keymap/policy      select  Don't touch keymap
      localepurge     localepurge/use-dpkg-feature    boolean true
      libpam-runtime  libpam-runtime/override boolean false
      libnss-ldap     libnss-ldap/override    boolean false
      libpam-ldap     libpam-ldap/override    boolean false
      libc6   libraries/restart-without-asking        boolean true
      EOF
      
  6. Minimal upgrade run:
    • Préparez-vous à possiblement rencontrer des problèmes pour les logiciels à cette étape-ci. Référez-vous à la section des problèmes connus pour les régler.

      env DEBIAN_FRONTEND=noninteractive APT_LISTCHANGES_FRONTEND=mail apt upgrade -y -o Dpkg::Options::='--force-confdef' -o Dpkg::Options::='--force-confold'
      
  7. On physical servers (dom0):

    • xen packages for i386 platform do NOT exist since Jessie. If you are upgrading a 32bit system, ignore the purge command below and pin the xen packages to keep the ones from wheezy. (TODO we might want to change this recommendation to switch to KVM because keeping wheezy around in bullseye is really, really sketcy)

      Pendant le reboot ci-dessous, utiliser la console série pour aller dans le BIOS et vérifier que la redirection série est configurée à "VT-UTF8" et non "VT-100".

  8. Upgrade the rest of the system:
    • env DEBIAN_FRONTEND=noninteractive APT_LISTCHANGES_FRONTEND=mail apt dist-upgrade -y -o Dpkg::Options::='--force-confdef' -o Dpkg::Options::='--force-confold'
      

Re-enable and run puppet!

  1. verify that puppet doesn't break anything:
    • (puppet agent --enable; puppet agent -t --noop --no-report; puppet agent --disable "verifications post-upgrade to bullseye") 2>&1 | less -SR
      
  2. Re-enable puppet if everything seems ok:
    • puppet agent --enable && puppet agent -t
      

Things to do after the upgrade

  1. Install the package koumbit-scripts if it's not already there:

    • apt-get install koumbit-scripts-vps
      

    If sources are missing, add it (see debian.koumbit.net)

  2. check the updates on configuration files, by looking for .dpkg-* or .ucf-* files in /etc, or by using the clean_conflicts script in koumbit-scripts 1.2:

    • /opt/bin/clean_conflicts
      
  3. On all but xen domU servers, rerun grub and make sure the right drives are configured for a reboot (e.g.: both sda and sdb).

    • dpkg-reconfigure grub-pc
      

      Machines that run with grub in EFI mode will probably not have grub-pc installed. The equivalent command would be dpkg-reconfigure grub-efi-amd64 except it won't show a list of disks to install to since grub is installed to the EFI.

  4. Suivre tout les autres procédures applicables (voir la section plus bas)
  5. Minimize the list of packages that were marked as manually installed. This might let apt decide at some point that some packages are not needed anymore.
    • apt-mark minimize-manual
      
  6. Remove obsolete packages

    • apt autoremove --purge -y
      
  7. Redémarrer le système et surveiller la console pour voir si des problèmes se présentent (e.g. lags, erreurs, fsck, p-e l'output de console ne fonctionne plus).
  8. Cleanup packages that are not in any current apt sources.
    • First have a look at the list of packages to be removed.
    • # list all packages not in any installed sources.
      aptitude search '?narrow(?not(?archive("^[^n][^o].*$")),?version(CURRENT))'
      
      • First look at the list to see if anything needs to be kept around (like Facter). If so, remove other packages manually (e.g. apt purge xyz) from that list.

      If (only if) everything can be removed, you can do so with one command:

      • # uninstall anything that shouldn't be kept around.
        aptitude purge '?narrow(?not(?archive("^[^n][^o].*$")),?version(CURRENT))'
        
  9. Empty apt cache
    • apt clean
      
  10. Run puppet again

    puppet agent -t
    
  11. Vérfier qu'il y a assez d'espace restant pour que les backups aient lieux.
  12. Bien sûr, vérifier que les services offerts par la machine fonctionnent toujours. Tester les vrais services (e.g. accéder à une page web, faire un appel -- accéder à ce que chaque service est supposé offrir), et aussi vérifier l'état dans icinga.

  13. Retirer incron qui provoque un problème avec alternC. On peut vérifier que les processus ne s'accumulent pas avec ps faux | grep incron | wc -l (voir rm#31784). Pour retirer incron  rm /etc/incron.d/alternc_* 

  14. Vérifier les stats du serveur sur http://stats0.koumbit.net/

  15. Enlever le downtime dans icinga.
  16. Vérifier dans la file roots@rt.k.n si la file est spammé par des erreurs suite à votre mise à jour!

  17. update the wiki documentation to reflect the new release; you're now done!

Autres procédures

Finir upgrade Postgresql 11 -> 13

Cette procédure est un copier-coller de celle dans BusterUpgrade avec les numéros de versions modifiés. Il faut tester si elle fonctionne bien pour l'upgrade à la version 13.

Faire celà pour enlever l'ancien cluster.

  1. Lister les clusters postgres:

    pg_lsclusters
    # normalement 11 est démarré, et 13 est "down"
    
    
  2. Backup

    sudo -u postgres pg_dumpall > /tmp/pg11.backup
    
  3. Arrêt pgsql:

    service postgresql stop
    
  4. Upgrade cluster

    pg_upgradecluster -m upgrade 11 main
    
  5. Start mysql:

    service postgresql start
    
  6. List clusters

    pg_lsclusters
    # Normalement 11 devrait maintenant être down, puis 13 up
    
    
  7. Tester la base de données (e.g. se connecter à la base de données, vérifier qu'une application qui l'utilise fonctionne bien)
  8. Enlever l'ancienc cluster

     sudo pg_dropcluster 11 main --stop
    

nginx

Dans la version de bullseye de nginx, une ancienne ligne de configuration est maintenant dépréciée et il faut la retirer:

ssl on;

On veut à la place s'assurer d'utiliser des lignes de ce genre là dans les blocs server:

listen 443 ssl;

Problèmes rencontrés

php n'est pas mis à jour automatiquement

Comme quand on arrive à buster, la nouvelle version de PHP n'est pas activée automatiquement. Donc c'est encore 7.3 qui roule jusqu'à ce qu'on active 7.4 dans apache.

If the service (php+apache) is managed by puppet usually it's enough to do:

apt install libapache2-mod-php7.4 ; puppet agent -t

Apache

Assuming it's managed properly by puppet :

apt install php7.4 libapache2-mod-php7.4
a2enmod php7.4
puppet agent -t

Following that, remove any php7.3 packages manually.

Virtualbox

Bullseye n'a toujours pas de package pour virtualbox (sauf sid).

Relancer puppet une fois l'upgrade terminée générera donc des erreurs.

Error: Execution of '/usr/bin/apt-get -q -y -o DPkg::Options::=--force-confold install virtualbox' returned 100: Reading package lists..
Package virtualbox is not available, but is referred to by another package.
E: Package 'virtualbox' has no installation candidate
Error: /Stage[main]/Profile::Desktop::Virtualization/Package[virtualbox]/ensure: change from 'absent' to 'present' failed: Execution of '/usr/bin/apt-get -q -y -o DPkg::Options::=--force-confold install virtualbox' returned 100: Reading package lists...
the following packages replace it:
  virtualbox-qt

E: Package 'virtualbox' has no installation candidate

Il faudra mettre le profil puppet à jour pour régler ça. Voir ticket 32533

postfixadmin

Cette application n'a pas réussie à se rendre dans debian testing à temps pour pouvoir se rendre dans bullseye. La migration a été bloquée parce qu'un problème était causé à l'upgrade du package: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=926253

Si on doit utiliser ça, on doit donc l'installer via debian sid.

Références


CategoryDebian

BullseyeUpgrade (last edited 2021-09-02 21:19:20 by gabriel)