Debian 10 ("Buster") devrait être publié @TODO@! Donc on veut faire des tests de mise à jour pendant quelque temps pour trouver tous les problèmes potentiels pour ensuite pouvoir upgrader en masse. Voici des notes et références pour la mise à jour.

Voir https://redmine.koumbit.net/projects/kt-sa-debian-upgrades pour la liste complète des mises à jour et des outils de suivi de la progression.

Sommaire des changements

Les changements importants de Buster sont bien documentés ici, mais on peut noter rapidement:

@TODO@

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 StretchUpgrade servira de base à celle de Buster 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: cette procédure peut échouer si elle est roulée à partir de l'interface graphique, qui est redémarrée durant la procédure, selon cette note de Debian. TODO: Vérifier si c'est toujours un problème dans Buster.

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

  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!
  4. check backups on backup server
  5. If the server is a fresh jessie install, run  apt install ttyrec screen  and avoid the puppet and sudo's below

  6. Run in screen and record the session
    • sudo ttyrec -e screen /var/log/upgrade-buster.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=buster
      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 # Note: it may be /var/lib/apt/extended_states in jessie, depending on installed software and history (?)
      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 Nagios.

Prepare and check system

  1. disable puppet, pinning and check for packages on hold or broken
    • puppet agent --disable upgrading system to buster # 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
  2. Run any pending upgrade:
    • apt update && apt -y upgrade
  3. hold puppet and facter packages in order to upgrade all packages but them:
    • apt-mark hold puppet puppet-common facter hiera
  4. (optional) if the server is currently running mysql, prepare it for transitioning over to mariadb:

    • apt install default-mysql-server

Preparing sources.list

  1. This mostly means changing stretch to buster.

    • sed -i.orig 's/stretch/buster/g' /etc/apt/sources.list
      rm /etc/apt/sources.list.d/stretch-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

      we want to keep the following APT repository sources:

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

old method to keep puppet from wheezy, we surelery don't want that in Buster

  1. (TODO keeping wheezy around in stretch is really sketchy.. we need to figure this out or finally migrate to puppet 3.7) Until we upgrade to puppet 3.x, we'll still need to keep wheezy around. So re-add a wheezy source in sources.list.d:

    • mkdir -p /etc/apt/sources.list.d
      cat > /etc/apt/sources.list.d/wheezy.list << EOF
      deb http://httpredir.debian.org/debian wheezy main
      deb http://httpredir.debian.org/debian wheezy-backports main
      EOF
  2. (TODO this step is about keeping wheezy. we need to change it) While at it, we pin puppet and stuff:

cat > /etc/apt/preferences.d/puppet_from_wheezy.pref << EOG
Package: puppet puppet-common ruby1.8 libxmlrpc-ruby libopenssl-ruby libshadow-ruby1.8 ruby ruby-* libruby*
Pin: release n=wheezy
Pin-Priority: 1500

Package: facter
Pin: release n=wheezy-backports
Pin-Priority: 1500
EOG

apt-get remove ruby-safe-yaml

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:
    • 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 buster is really, really sketcy)

    • Using XEN/ganeti see their sections below for details #Xen #Ganeti

    • Now you can safely reboot:

      Pendant le reboot, 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".

      reboot
      sudo ttyrec -e screen /var/log/upgrade-buster-phase2.ttyrec

      (TODO p-e que cette étape de reboot est inutile. il faudrait considérer la retirer) Les sysadmins de Debian font un seul reboot durant leur procédure, réviser la notre, particulièrement en révisant la procédure de temps mort minimal également.

  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. (TODO on doit vraiment upgrader notre setup à puppet 3.7 au moins) Remove hold on puppet and facter packages, the puppet run we'll be doing next should be adding a file in preferences.d to pin puppet to the wheezy version (2.7) which'll let us get security upgrades as opposed to held packages:

    • apt-mark unhold puppet puppet-common facter hiera
  2. verify that puppet doesn't break anything:
    • puppet agent --enable; puppet agent -t --noop --no-report; puppet agent --disable verifications post-upgrade to buster
  3. 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
  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 dom0 servers, rerun grub and make sure the right drives are configured for a reboot

    • dpkg-reconfigure grub-pc
  4. Remove obsolete packages

    • apt autoremove -y --purge
  5. 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. If so, remove other packages manually 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))'
  6. Empty apt cache
    • apt-get clean
  7. Reboot one last time and monitor for problems in the boot sequence (lags, or errors, fsck, maybe console output failure)
    • reboot
  8. Vérfier qu'il y a assez d'espace restant pour que les backups aient lieux.
  9. 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 nagios.

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

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

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

Trucs peut-être à réparer avec puppet

php est partiellement mis à jour automatiquement

C'est semble être semblable au bug sur stretch (php5->php7)

Buster semble viser php7.3!

Une autre note, ne chercher pas phpX-mcrypt ça a été retiré, voir le bug suivant, ça parle aussi de ça.

Debian bug libapache2-mod-php: Upgrade to php7.2 disables the php module

Ici, php7.0 était actif. Après la mise à jour, on retrouve, des packages de php7.0 voici la liste

# aptitude search '?narrow(?not(?archive("^[^n][^o].*$")),?version(CURRENT))' | grep php
i  libapache2-mod-php7.0 - server-side, HTML-embedded scripting language (Apache 2 module)
i A php7.0-cli - command-line interpreter for the PHP scripting language
i A php7.0-common - documentation, examples and common module for PHP
i  php7.0-gd - GD module for PHP
i  php7.0-intl - Internationalisation module for PHP
i A php7.0-json - JSON module for PHP
i  php7.0-mcrypt - libmcrypt module for PHP
i  php7.0-mysql - MySQL module for PHP
i A php7.0-opcache - Zend OpCache module for PHP
i A php7.0-readline - readline module for PHP
i  php7.0-xml - DOM, SimpleXML, WDDX, XML, and XSL module for PHP
i  php7.0-zip - Zip module for PHP

Des packages de php7.2 on été installé...

# dpkg -l | grep php7.2
ii  php7.2-common                 7.2.9-1                      i386         documentation, examples and common module for PHP
ii  php7.2-mbstring               7.2.9-1                      i386         MBSTRING module for PHP
ii  php7.2-xml                    7.2.9-1                      i386         DOM, SimpleXML, WDDX, XML, and XSL module for PHP

Ici, c'est parce que php-xml,php-mbstring était installé sur la machine, ça a installé php7.2-xml et php7.2-mbstring

C'est semble être semblable au bug sur stretch (php5->php7)

apt install php7.3
dpkg --list | grep -oe 'php7.0-[a-z0-9]\+' | sed -e '/php7.0-mcrypt/d' -e 's/php7.0/php7.3/' | xargs apt install -t buster -y
dpkg --list | grep -oe 'php7.0-[a-z0-9]\+' | xargs apt remove -y
a2enmod php7.3
apache2ctl graceful

Trucs à réparer dans Puppet

TODO: il va sûrement y en avoir.

Trucs à réparer PAS dans puppet

Simplement parce que c'est pas tous les systèmes qui sont dans puppet.

Thunderbird

Les liens http ne s'ouvre plus dans Thunderbird.

* (thunderbird:31945): WARNING **: 21:02:49.762: Could not launch default application for URI: L’exécution du processus fils « /usr/lib/x86_64-linux-gnu/glib-2.0/gio-launch-desktop » a échoué (Permission non accordée)

C'est le profile appamor qui semble être un peu trop rigide. Pour le moment, je désactive ça, c'est pas merveilleux.

apparmor_parser -R /etc/apparmor.d/usr.bin.thunderbird
ln -s /etc/apparmor.d/usr.bin.thunderbird /etc/apparmor.d/disable/

Référence chez Debian https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=908206

Références


CategoryDebian

BusterUpgrade (last edited 2018-11-11 18:15:16 by SeBas)