Contents
Voici la doc d'upgrade d'Alternc sur nos serveurs.
historique
Une fois la mise à jour terminé ne pas oublier de tester.
Mise à jour 3.5.x vers 3.5.y
Upstream a fait une release récemment, donc maintenant ça veut installer la version upstream! À l'interne, on veut la version de Koumbit!!
Normalement c'est réglé côté puppet - la prochaine personne qui fait un upgrade est invitée à double-checker et retirer cet avis si tout est beau!
Avant de commencer, assurez-vous que tout roule et que vous avez l'espace disque disponible. Ça peut valoir la peine de se faire un courriel de test par exemple. Il est bon également d'avoir en main un courriel extérieur à l'installation pour pouvoir communiquer en cas de problème.
Cette procédure prend environ 45 minutes et implique généralement un downtime de quelques minutes.
- Noter la version actuelle d'AlternC
- Il y a une version de package, ex.: 3.5.0~rc1+0~20191218224408.56~1.gbp
- Mais aussi la version taguée dans Git, ex.: 3.5.0.4
- backup du code d'AlternC
# whereis alternc alternc: /usr/sbin/alternc.install /usr/lib/alternc /etc/alternc /usr/share/alternc
- /usr/sbin/alternc.install est un symlink donc on n'a pas à le conserver
- /usr/lib/alternc : ce sont les scripts. On fait un git init / git add / git commit de tout
- /etc/alternc : config. faire un commit dans /etc vu qu'il y devrait déjà y avoir un dépôt Git pour etckeeper
- /usr/share/alternc : le code. On fait un git init / git add / git commit de tout
- Backup de la base de données
mkdir ~/YYYYMMDD_backups_pre_upgrade_altc mysqldump alternc > ~/YYYYMMDD_backups_pre_upgrade_altc/alternc.sql
- Vérfier que les derniers backups se sont terminés sans erreurs.
tail /var/log/backupninja.log # Voir le motd.d pour la commande exacte qui peut être avec borg rdiff-backup -l backup-server.koumbit.net@backup.koumbit.net::/backup/server.koumbit.net//rdiff-backup
- Vérifier l'état des paquets
apt-mark showhold apt-cache policy $(aptitude search ~i~nalternc -F %p | tr -s '\n' ' ') # et ensuite apt-cache policy des autres paquets on hold
Pour une vue rapide: for i in $(apt-mark showhold); do echo $i; apt-cache policy $i | grep -A 1 Installed; done. S'il y a des updates dispos, checker ce que c'est pour avoir une idée de l'impact.
- Assurer que les dernières mises à jour ont bien été appliquées
Dans la base de données d'AlternC, la "value" de la ligne dont le "name" est "alternc_version" dans la table "alternc_status" devrait correspondre au dernier fichier de /usr/share/alternc/install/upgrades/3.5.0.x.xxx. Ou autrement dit :
> SELECT value FROM alternc_status WHERE name='alternc_version';
- Retirer le hold sur les paquets à upgrader En général, il s'agit des paquets suivants :
apt-mark unhold alternc alternc-certificate-provider-letsencrypt alternc-roundcube roundcube roundcube-mysql roundcube-plugins
- Faire la mise-à-jour
apt update apt upgrade
Le upgrade mentionne des changements dans certains fichiers et nous demande de choisir quelle version conserver. Prenez note de ces changements en regardant le diff, mais en général on veut prendre les versions fournies par les paquets. Puppet va remettre les configurations nécessaires à priori.
S'il y a roundcube, il est possible que ça demande s'il faut configurer la base de données de roundcube. À priori non puisqu'on a déjà une installation fonctionnelle lors d'un upgrade.
- Bon, dans un cas, le service apache2 n'est plus capable de repartir après ça, mais les sites fonctionnent toujours (?!) Et AlternC indique la nouvelle version ...
- Remettre les paquets on hold Encore une fois, il s'agit des paquets suivants en général :
apt-mark hold alternc alternc-certificate-provider-letsencrypt alternc-roundcube roundcube roundcube-mysql roundcube-plugins
ATTENTION ça va vouloir installer alternC rc~2 de upstream à priori! -- Normalement c'est réglé, à double-checker et mettre à jour cette doc -- Il vaut mieux laisser le hold sur tout paquets installés de Koumbit puis les faire manuellement pour installer la version souhaitée! On devrait avoir de quoi dans puppet pour pinner ça... (truc ajouté, noramelemnt c'est bon, mais bien checker avec apt-cache policy ce qui va être installé!!). Au besoin, en attendant, on peut spécifier d'installer la version qui vient des sources de koumbit, par exemple :
apt install alternc=3.5.0~rc1+0~20230602174409.86~1.gbpa261aa
Faut y aller un paquet à la fois et remettre sur hold après.
- Appliquer la mise-à-jour On a fait un upgrade des paquets, mais la mise-à-jour n'a pas encore été totalement installée dans AlternC. Généralement ici le restart de apache va planter, coupant le service quelques minutes (jusqu'à ce qu'on roule puppet).
/usr/sbin/alternc.install
- Rouler puppet et assurer que tout est beau! La première run de Puppet va potentiellement faire un alternc.install (dépendamment des modifs apportées aux fichiers de conf de alternC par la nouvelle version), ce qui va faire un reload de Apache.
- Remettre le thème de Roundcube
Roundcube revient généralement à son thème original. Il faut changer le fichier /etc/roundcube/config.inc.php et changer la string 'larry' par 'elastic' (responsive) pour la skin utilisée par Roundcube.
- Assurer que tous les services fonctionnent!
- Si le module alternc-php-fpm est utilisé, bien vérifier que tous les services phpx.x-fpm sont repartis
- Vérifier qu'il n'y ait pas de problème qui ressortent dans la file root
Mesures à prendre lors de l'upgrade vers Bullseye
Ces mesures sont temporaires pendant que l'on fait le switch de AlternC 3.5 buster à AlternC compatible avec bullseye
- Désactiver Mailman (mettre mailman à "false" dans puppet suffit. Il y a aussi une cron à supprimer manuellement sinon ça va spammer la file root en essayant de rouler un script qui n'existe pas : /etc/cron.d/alternc-mailman )
- Spécifier le path du webroot pour les certs en ajoutant dans les hiera (seulement si on a installé alternc-certificate-provider-letsencrypt de unstable) :
profile::letsencrypt::webroot_path: '/var/lib/acme'
MAJ 3.3.11 (stretch) -> 3.5pre
Une documentation plus à jour est disponible côté upstream: https://aide.alternc.org/300/Mise-a-jour-3-3-x-vers-3-5-x
En date du 27 mai 2019! 29971 Note, on vise l'intégration à puppet4 après la maj.
- Vérifier les configurations de debconf de votre alternc. Ça va vous aider si jamais puppet écrase certaines configurations.
# debconf-get-selections | grep alternc > /root/MAJalternc-debconfsetting.txt # cat !$
- rouler alternc.install et raccorder les changements au templates
- Avant de partir analyser le setup de vhost d'AlternC sur la base de données alternc
MariaDB [alternc]> select count(0), type from sub_domaines group by type;
- installer alternc-ssl (sinon, alternc3.5 va dire que certains table comme alternc.certificates n'existe pas)
- stop puppet : puppet agent --disable
sources de koumbit dépot alternc35 : http://debian.koumbit.net/debian/dists/alternc35/ :
echo 'deb http://debian.koumbit.net/debian alternc35 main' > /etc/apt/sources.list.d/alternc35.list apt update
- enlèver les sources d'upstream ou de 3.3 de kt
faire un backup de la base de données :
mysqldump alternc > "/root/alternc-pre-upgrade-`date +%F`.sql"
update les packages :
apt remove alternc-ssl
- Retirer la cron-job qui n'est pas supprimé quand on supprime le package.
rm /etc/cron.d/alternc-ssl
apt upgrade alternc alternc-roundcube alternc-mailman
- Retirer la cron-job qui n'est pas supprimé quand on supprime le package.
mettre la ligne (sans quotes) ALTERNC_REQUEST_CERTIFICATES=system dans /etc/alternc/local.sh
Ceci fera en sorte que alternc-certificate-provider-letsencrypt ne demande seulement que les certificats de système lors d'alternc.install (e.g. ça évite d'attendre que des centaines de noms de domaines demandent soudainement un certificat)
dans la base de données d'alternc: assurer que les variables fqdn_dovecot, etc. sont correcte dans le système :
update variable set value = 'mail.<domaine>' where name in ('fqdn_postfix', 'fqdn_dovecot'); update variable set value = 'ftp.<domaine>' where name = 'fqdn_proftpd'; update variable set value = 'listes.<domaine>' where name = 'mailman_url';
- rouler alternc.install
erreur
Running upgrade script 3.5.0.1.sql ERROR 1146 (42S02) at line 23: Table 'alternc.certificates' doesn't exist ERROR 1146 (42S02) at line 41: Table 'alternc.certif_hosts' doesn't exist ERROR 1062 (23000) at line 69: Duplicate entry 'fqdn_dovecot' for key 'PRIMARY' ERROR 1062 (23000) at line 73: Duplicate entry 'fqdn_postfix' for key 'PRIMARY' ERROR 1062 (23000) at line 77: Duplicate entry 'fqdn_proftpd' for key 'PRIMARY' Running upgrade script 3.5.0.2.sql ERROR 1064 (42000) at line 3: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'UPDATE alternc_status SET value='3.5.0.2.sql' WHERE name='alternc_version'' at line 5 Running upgrade script 3.5.0.3.sql ERROR 1071 (42000) at line 3: Specified key was too long; max key length is 1000 bytes alter table sub_domaines drop index compte; alter table sub_domaines modify column valeur VARCHAR(1024);
- débogguer ce bris
- remplace webmail CNAME avec roundcube webmail access
- réactiver puppet
MAJ d'alternc de wheezy à stretch
En 2017/2018, nous avons mis à jour alternc dans le cadre de mise à jour des systèmes d'exploitation.
Listes des installatinos d'AlternC qui devront être mis à jour bientôt.. 25205
- listes des installation d'AlternC qui ont été mis à jour