''!AutoProvisioning'' pourrait se traduire par "mise à jour automatique". Avec ce type de système, les téléphones sont capables de se mettre à jour automatiquement au démarrage, aussi bien au niveau logiciel (''firmware'') que configuration (login IAX, adresse du serveur, codec, dialplan, etc.) Voici comment déployer des téléphones en masse afin qu'il se mettent à jour automatiquement. = Principe et installation manuelle (pour 3 ou 4 postes) = == Coté serveur == 1. Installer un serveur HTTP (ou utiliser un serveur déjà existant). Une configuration type !VirtualHost sur un serveur déjà existant fonctionne parfaitement. 1. A la racine du serveur, copier le firmware, par exemple `ipphone5-155-auf2.bin` 1. Pour chaque adresse MAC de téléphone, créer un fichier nommé `prenom.nom.set` selon le modèle suivant : {{{ # fichier prenom.nom.set BIN ipphone5-156-auf19.bin:15619 CFG prenom.nom.txt:1 END }}} . '''Attention''' : le nom du fichier doit être en minuscules. En revanche, dans le fichier il faut mettre les mots clés tels que 'BIN' ou 'END' en majuscules, tout en début de ligne et suivis d'un seul espace. 1. Créer le fichier de configuration `prenom.nom.txt` correspondant, selon le modèle [[attachment:modele-configuration-ipphone5.txt]] (ce fichier est auto-documenté). Attention : n'y mettez ni le nom d'utilisateur ni le mot de passe IAX car ce fichier sera téléchargeable par n'importe qui ayant accès au site web ! '''Note''' : les versions du firmware spécifiques à l'AUF gèrent le numéro de version sur 5 chiffres, et non pas 3 comme dans la [[http://www.aredfox.com/PA1688/download/English/documents/products/AutoUpgradeGuideEng.pdf|documentation du constructeur]]. Cela permet d'indiquer 3 chiffres pour la version constructeur (1.56 à l'heure où je rédige) et 2 chiffres pour les modifications AUF (19 à l'heure ou je rédige encore) == Coté téléphone == 1. Pour chaque nouveau téléphone reçu, passer en mode DHCP 1. Indiquer 'account' au niveau du 'type de mise à jour', et donner l'adresse du serveur avec `http://` devant, par exemple `http://voip.sn.auf` (attention, on ne peut pas indiquer de sous-répertoire). 1. Indiquez le nom d'utilisateur (prenom.nom) et le mot de passe de connexion IAX (il ne seront pas envoyés par le fichier CFG) 1. Rebooter le téléphone. C'est tout ! == Ce qui se passe ensuite == A chaque démarrage du téléphone, celui-ci va chercher un fichier `prenom.nom.set` (où ''prenom.nom'' est le nom du compte IAX choisi). En analysant ce fichier le téléphone sait s'il doit télécharger un nouveau ''firmware'' (micrologiciel) et/ou une nouvelle version de sa configuration. Il suffit donc de gérer ces informations sur le serveur pour que tous les téléphones se mettent automatiquement à jour via un simple redémarrage. = Un logiciel coté serveur pour automatiser tout cela = NB : ceci est un '''prototype''', voir le TODO à la fin de ce document pour quelques améliorations possibles. Une méthode similaire, mais basée sur les noms d'utilisateur plutôt que les adresses mac est utilisée à Dakar : [[ZAO/Dakar/Configuration/Voip]] == Principe du système proposé ici == Il s'agit d'un script CGI qui sait générer les fichiers .set et .cfg en fonction du dernier micrologiciel et de la dernière configuration présents dans le répertoire. Dès que le téléphone contacte le serveur web et récupère son fichier .set (ou .cfg), le reste de la procédure est identique à ce qui est indiqué au début de cette page. == Télécharger le logiciel == Les quelques fichiers nécessaires sont disponibles ici : http://git.auf.org/?p=ipphone-tools;a=tree;f=autoconfig == Installation == 1. créer un répertoire où seront placés le script CGI et les fichiers micrologiciels et configuration (`/srv/www/voip-autoconfig` dans la suite de ce document) 1. monter un serveur Web (éventuellement un !VirtualHost) avec les ré-écritures suivantes : {{{ RewriteEngine on RewriteRule ^/([0-9a-f-]{17}).(set|cfg) /autoconfig?$2=$1 [passthrough] ScriptAlias /autoconfig /srv/www/voip-autoconfig/autoconfig.cgi }}} 1. placer un micrologiciel dans le répertoire, avec un nom au format `ipphone5-VVV-aufNN.bin`, avec VVV le numéro de version du micrologiciel sur 3 chiffres et NN le numéro de sous-version spécifique AuF * faire un lien dessus avec le nom "micrologiciel" pour que ce soit celui utilisé par défaut * faire un lien dessus avec le nom "micrologiciel-xx-xx-xx-xx-xx-xx" si vous avez un firmware spécifique pour un téléphone particulier 1. modifier le fichier "configuration-base" pour qu'il contiennent les données de configuration générales à tous les téléphones de votre implantation. '''Penser à modifier le numéro de série en cas de mise à jour (NUMERO_DE_SERIE_BASE:NNN)'''. 5. Si besoin, écrire un fichier configuration-xx-xx-xx-xx-xx-xx pour chaque téléphone IP qui aura une configuration spécifique == Déploiement d'un téléphone == 1. configurer le téléphone en mode "autoprovisioning" : indiquez ''type de mise à jour = `MAC`'' et ''adresse de mise à jour = `http://nom.du.serveur`'' au niveau de l'interface web de configuration de l'IP Phone. 1. afin d'éviter d'avoir à envoyer des données confidentielles en clair via le script, indiquez le nom d'utilisateur et les différents mots de passe directement au niveau de l'interface web du téléphone (et non pas dans le fichier de configuration dédié au téléphone) 1. rebooter le téléphone, il se met automatiquement à jour. C'est tout. == Utilisation avancée et petites astuces == * Utilisez de préférence des liens symboliques pour le micrologiciel, par exemple : {{{ micrologiciel-stable -> ipphone5-156-auf4.bin micrologiciel-test -> ipphone5-156-auf5.bin }}} * Pour proposer un micrologiciel spécifique à un téléphone : {{{ micrologiciel-00-09-45-ba-00-01 -> micrologiciel-test }}} == En cas de soucis == * Regardez les logs apache * Faites des wget pour voir ce qui se passe (`wget http://nom.du.serveur/xx-xx-xx-xx-xx-xx.set`) * Demandez de l'aide sur la liste technique de l'AUF ;) == TODO == * vérifier que l'IP qui fait les requêtes correspond bien à l'adresse MAC, ça serait le minimum de sécurité acceptable si on transmet des mots de passe dans les configurations (pb si le téléphone n'est pas sur le même réseau ethernet que le site web). * permettre des configurations "groupes" via des configuration-xx-xx où "xx-xx" est le début de l'adresse MAC (xx, xx-xx, xx-xx-xx, etc) * adapter pour les autres types de mise à jour (IP, '''username''', etc.). Surtout username, en fait (Jérôme y travaille). * packager en .deb ---- [[CatégorieVoIP]]