Modifications entre les versions 26 et 27
Version 26 à la date du 2008-02-21 22:10:05
Taille: 10490
Éditeur: localhost
Commentaire: converted to 1.6 markup
Version 27 à la date du 2008-02-23 06:30:11
Taille: 10547
Commentaire:
Texte supprimé. Texte ajouté.
Ligne 150: Ligne 150:
 * CAI de Hanoï fait le 23 février 2008 : aucun souci

Mes notes pour un backport de Asterisk 1.4.x (Debian/Sid) vers Etch -- ThomasNoël

Objectifs

Je veux compiler une version sans y intégrer les trucs inutiles, notamment :

  • pas de h323 dépendant de openh323 (on utilisera asterisk-ooh323c en cas de besoin de h323)
  • pas de liaisons ODBC, MSSQL ou PgSQL, inutiles pour nous
  • pas de consoles kde, qt ou gtk
  • pas de gestion des voicemail en IMAP ou ODBC
  • en revanche, on va ajouter une dépendance sur gnutls apparemment nécessaire pour iksemel (jabber)

Pour cela, on prend une Etch VIERGE. Attention c'est important : la compilation d'asterisk peut varier si tel ou tel paquet est déjà installé. En effet, le ./configure active les modules s'il peut les compiler, et il est difficile de desactiver certains (c'est pas les --with/--without du ./configure qui font tout, c'est beau).

Ensuite, on se base sur ce qui est disponible dans Sid, voir : http://packages.qa.debian.org/a/asterisk.html (s'abonner aux RSS si vous avez envie de voir comment les dev Debian ont du mal avec asterisk).

Résultats actuels

Mis en place dans deb http://apt.auf.org etch voip-test

JE CHERCHE DES VOLONTAIRES pour tester en production. Il suffit d'être capable, si ça se passe mal (cas peu probable), de repasser en asterisk 1.2. Donc il suffit de faire un backup de son /etc/asterisk et de garder sa clé privée dans un coin, c'est tout...

Procédure pour les volontaires :

  • me contacter (un ptit coup de jabber en parallèle pendant l'upgrade, si ça vous rassure)
  • faire des backups (copies) de /etc/asterisk et /var/lib/asterisk/keys
  • ajouter dans les sources : deb http://apt.auf.org etch auf voip-test

  • aptitude update; aptitude install auf-keyring; aptitude update : mise à jour des sources et ajout de la clé du dépot AUF

  • aptitude -d dist-upgrade : téléchargement des mises à jour à l'avance pour limiter la durée de la rupture de service qui suit (option -d : pas d'installation, juste download)

  • /etc/init.d/asterisk stop : ARRET DU SERVICE VOIP (durée à prévoir : 5 minutes)

  • aptitude dist-upgrade : mise à jour d'asterisk et paquets dépendants (vérifiez la liste des paquets proposés à l'update avant de valider, en cas de doute contactez moi... avant de valider)

  • pendant de dist-upgrade : accepter toutes les demandes de mise à jour de fichier (/etc/asterisk/*.conf et /etc/default/asterisk)
  • comme d'habitude après toute upgrade modifiant des fichiers, lancer un find /etc/ -name "*.dpkg*" -o -name "*.ucf*" ; cela vous donnera les modifications à intégrer avant de relancer votre service1

  • indiquer RUNASTERISK=yes dans /etc/default/asterisk
  • /etc/init.d/asterisk start : ça doit re-marcher à partir de là

Dépendances

il faut backporter libpri et zaptel : aucun soucis de ce coté là

Modification des sources d'asterisk

Voir le changelog du paquet... c'est un peu le bazar, mais on y arrive (c'est déjà moins tordu qu'avec 1.2, j'avoue).

asterisk-config-auf

Adapté à asterisk 1.4. Un vrai parcours du combattant vu la documentation de ce qui a changé entre 1.2 et 1.4 (pour ceux qui n'ont jamais joué avec asterisk : la doc est tout simplement inexacte, partielle, elliptique voire erronée).

appconference

J'ai packagé la version 2.0, compatible avec asterisk 1.4. Elle sait faire beaucoup de choses de plus que la version que nous avons actuellement avec 1.2 ; cependant il va falloir étudier les regressions.

Note : 2.0-1 est une version patchée "AUF" pour annoncer les départs et les arrivées dans une conférence. Le patch, presque pas crapoteux, sera soumis à l'upstream un jour de pluie.

addons

Backport des sources asterisk-addons, telles quelles, ce qui donne :

  • asterisk-ooh323c : channel h323 pour le Grand Projet (TM) de liaison avec le matos de visio Polycom
  • asterisk-mysql : liaisons avec mysql
  • asterisk-mp3 : pour lire les mp3 directement

Notes

  • asterisk-doc : aucune utilité pour nous ; si besoin on prendra celui de Sid

  • Il est très très très très probable que je ne parvienne pas, vu mes ressources, à faire un package qui permette un bel upgrade "hip hop" depuis le 1.2. Y'a trop de trucs modifiés (par asterisk). Je passerais sans doute infiniment moins de temps à documenter une réinstallation (dire ce qui doit être mis de coté avant un purge+install), qui aura "l'avantage" de reprendre un peu le bazar à zéro... Désolé les gars, mais bon.

Reste à faire

  • l'asterisk de sid intègre le patch bristuff : voir si ça inclue DPickUp et autres modifs de bristuff (i.e. on ne doit pas avoir de regression avec l'asterisk-classic que nous utilisons actuellement).

  • d'une façon générale, étudier les regressions (c'est pas la doc d'asterisk qui va nous les dire)
  • tester ekiga/sip... avec la video (en prévision de ekiga 3.0 qui saura faire du codec x264)

Tests en cours

Sur voip-test.sn.auf.org (merci Jérôme), machine vz interne au RPV de Dakar, accessible en IP publiques via IAX2 (SNAT/DNAT).

Test 1 : installation sur une machine vierge

  • Ajout du dépot AUF avec auf-keyring : ok

  • aptitude install asterisk : tout joli, a priori juste ce qu'il faut :

{{{Les NOUVEAUX paquets suivants vont être installés : asterisk asterisk-app-conference asterisk-config-auf asterisk-config-auf-connexions asterisk-moh-auf asterisk-prompt-fr asterisk-sounds-main libasound2 libgsm1 libiksemel3 libogg0 libpri1.0 libradiusclient-ng2 libsensors3 libsnmp-base libsnmp9 libspeex1 libsqlite0 libsysfs2 libtonezone1 libvorbis0a libvorbisenc2 0 paquets mis à jour, 22 nouvellement installés, 0 à enlever et 0 non mis à jour. Il est nécessaire de télécharger 17,7Mo d'archives. Après dépaquetage, 34,4Mo seront utilisés. }}}

  • Installation ok :

    (...)
    Paramétrage de asterisk-config-auf-connexions (1.0-64) ...
    Adding system user for Asterisk
    Ajout de l'utilisateur « asterisk » au groupe « dialout »...
    Terminé.
    Ajout de l'utilisateur « asterisk » au groupe « audio »...
    Terminé.
    Unable to connect to remote asterisk (does /var/run/asterisk/asterisk.ctl exist?)
    Unable to connect to remote asterisk (does /var/run/asterisk/asterisk.ctl exist?)
    
    Paramétrage de asterisk-moh-auf (1) ...
    Unable to connect to remote asterisk (does /var/run/asterisk/asterisk.ctl exist?)
    
    Paramétrage de asterisk-sounds-main (1.4.17~dfsg-1auf2) ...
    Paramétrage de asterisk-prompt-fr (0.0.20070104-1) ...
    Paramétrage de asterisk-app-conference (2.0) ...
    Paramétrage de asterisk-config-auf (1.4-7) ...
    
    Paramétrage de asterisk (1.4.17~dfsg-1auf2) ...
    Asterisk not yet configured. Edit /etc/default/asterisk first.
  • Questions debconf : ok (on les passe vu qu'on a pas encore
  • Vérif des droits sur /etc/asterisk et les clés : ok (note : c'est ast-config-auf-connexion qui créée le compte lors d'une prémière install. Normal. Asterisk s'installe ensuite et ne met pas le bazar, tout a l'air ok !)
  • RUNASTERISK=yes (/etc/default/asterisk : ok)

  • /etc/init.d/asterisk start, stop, reload, etc... : ok

  • astgenkey : ok

  • dpkg-reconfigule asterisk-config-auf : ok (asterisk-config-auf >= 1.4-8)

  • start : ok
  • tests de regression.
    • test des services de base de puis un ipphone : ok
    • test appel vers international, puis depuis international : ok
    • Regressions possibles/prévues :
      • conference : ça marche (version 2.0-1)
      • pickup (mais est-ce utilisé ?) : à revérifier, mais ça a l'air ok

PETITE ÉMOTION : mais mais mais, ça a l'air BON !!!!!

Test 2 : installation depuis une machine en asterisk 1.2 (asterisk-etch)

Youpi, c'est presque bon !!

Notes :

  • ne couvrira pas les installation bidouillées, normalement ça sera à gérer à coup de fichiers *.dpkg-new & co. Logique, classique.

  • pour éviter les réactions bizarres il faut stopper asterisk 1.2 avant le dist-upgrade => downtime

  • l'upgrade peut se faire de deux façons :
    • aptitude dist-upgrade (sans doute la méthode à conseiller, ne devrait pas poser de soucis sur un serveur non bidouillé)

    • aptitude install asterisk asterisk-config-auf asterisk-config-auf-connexions asterisk-prompt-fr (pour être certain de ne mettre à jour que la partie asterisk de la machine ; NB : un simple install asterisk ne suffit pas, au contraire il rend le système incohérent s'il n'est pas suivi d'un upgrade)

  • /etc/default/asterisk : il faut dire "oui" lorsque dpkg veut le remplacer, puis y indiquer "RUNASTERISK=yes"

Reste à faire : déplacement automatique de .key vers /usr/share... il faut le faire le plus tôt possible, sans doute dans asterisk-config-auf/debian/config (dans preinst ça marche pooh... bah...) ? ok dans asterisk-config-auf/debian/config oui je sais, bof mais je suis preneur d'une solution (je précise : pas d'une "idée" de solution, d'une solution testée et validée ;) )

Test 3 : vrais upgrades, merci aux cobayes !

Un VRAI upgrade d'un serveur en production !

  • Dakar, ce soir, me promet Jérôme. Allez Jérôme ! Lâche pas l'affaire, y'en a plus que pour quelques mois ;)

bao*CLI> core show version
Asterisk 1.4.17~dfsg-1auf3 built by thomas @ thomas-sandbox on a i686 running Linux on 2008-02-20 13:00:10 UTC
  • CAI de Danang fait le 20 février 2008 : aucun souci (malgré quelques avertissements pendant l'upgrade, cf upgrade-danang.log.txt )

  • BAP fait le 20 février 2008 : aucun souci (mêmes avertissements pendant l'upgrade, cf upgrade-bap.log.txt )

  • CAI de Hanoï fait le 23 février 2008 : aucun souci

MERCI les gars ! JC, pour le "cp" qui déconne au début de l'upgrade, c'est corrigé, merci. Pour les divers avertissements du 2nd upgrade, ils sont principalement dus au fait qu'asterisk n'avait pas été arreté. On se retrouve pendant l'upgrade avec un asterisk 1.2 qui tourne avec une config de 1.4 (ou l'inverse, je ne sais plus) et ça délire car les fichiers ne sont évidemment pas compatibles d'une version à l'autre, c'est Asterisk (ni compatibilité descendante, ni ascendante ;) )

Merci encore, ça me rassure tout ça !


Notes :

  1. comme par exemple le logrotate.d/asterisk à remanier pour y réintégrer votre génération de stats automatiques, le cas échéant (1)

Asterisk/NotesBackportEtch (dernière édition le 2008-02-27 10:49:24 par ThomasNoël)