Utilitaire de création et de déploiement des fichiers outils de l'acolab

Introduction

A l’ACoLab nous avons 2 CN (Grande CN et Shapeoko) , 4 formats de fichiers outils (LinuxCNC, Cambam, Fusion et Camotics) et 4 Pc (pour le moment) sur lesquels sont déployés ces fichiers. La combinatoire fait que créer tous ces fichiers et les déployer sur toutes les machines cibles devient une tache un peu lourde. Pour résoudre ce problème, 2 outils python ont été créés :

  • Un outil de création des différents formats de fichier à partir d’un fichier de référence au format Excel.

  • Un outil de transfert de chaque fichier vers la ou les machines cibles à l’emplacement où il doit être utilisé.

1. Utilitaire de création des fichiers

Cet utilitaire permet de créer les fichiers outils en partant du fichier Excel de référence pour cambam, camotics et linuxcnc. En raison de la complexité, le format du fichier outils fusion qui contient en plus les paramètres de coupe, les broches etc… n’est pas pris en compte dans cet utilitaire. Le format du fichier Excel de référence doit être identique au fichier ci-après:

releve_outil_grande_CN.xlsx (495,0 Ko)

1.1 Outil python

creation_fic_out_from_excel.zip (3,6 Ko)

1.2 Entrées sorties

Creation_fic_out_from_excel est développé en python 3.9. Il ne demande pas de configuration particulière. Tous les fichiers en entrée et en sortie sont demandés à l’intérieur du programme. Les extensions par défauts sont :

  • .xslx en entrée pour le fichier de référence

  • .xml pour le fichier en sortie à destination de camban

  • .json pour le fichier en sortie à destination de camotics

  • .tbl pour le fichier en sortie à destination de linuxcnc

1.3 Syntaxe

A partir du répertoire ou se trouve le python, les syntaxes possibles sont:

Création des fichiers cambam, camotics et linuxcnc a partir du fichier Excel (« all » est le défaut)

  • py fic_out_from_excel.py
    ou
  • py fic_out_from_excel.py all

Création des fichiers cambam à partir du fichier Excel

  • py fic_out_from_excel.py cambam

Création des fichiers camotics à partir du fichier Excel

  • py fic_out_from_excel.py camotics

Création des fichiers linuxcnc à partir du fichier Excel

  • py fic_out_from_excel.py linuxcnc

Il sera judicieux de créer les fichiers directement dans le répertoire de distribution avec le bon nom (voir 2eme utilitaire ci-dessous).

2. Utilitaire de déploiement des fichiers outils

Cet utilitaire permet de transférer tous les fichiers outils créés dans l’étape précédente vers la ou les machines/repertoires cibles. Cet utilitaire peut fonctionner pour n’importe quel fichier pourvu que ce dernier soit décrit dans le fichier xml de configuration.

2.1 Outil python

deploiement_fichier_outil.zip (1,3 Mo)

2.2 Fonctionnement de l’utilitaire

deploiement_fichier_outil est développé en python 3.9. Le principe est simple, Le programme boucle sur tous les fichiers pour toutes les machines et transfert le fichier correspondant vers la machine cible par sftp. Ceci requiert donc un peu de configuration préalable.

2.2.1 Installation d’un serveur ssh sur chaque PC cible.

sur linux : apt-get install ssh

sur windows le service openssh n’est pas démarré par défaut, il faut le démarrer dans l’utilitaire des services. Ceci est documenté dans le repertoire « doc » de la distribution (fichier .zip). Si le compte utilisé pour le transfert est privilégié, il faut aussi changer le nom de fichier qui recoit la clef publique (par défaut home directory/.ssh/authorized_keys). Ce point est documenté au même endroit.

2.2.2 Authentification par clefs privée/publique.

L’utilitaire assume que l’authentification de la requete sftp de la machine centrale sur la machine cible est faite par clef publique/clef privée. Il faut donc configurer ces clefs dans les fichiers adaptés. Il existe plein de documentation à ce sujet sur le net pour linux ou pour windows. Par exemple : How To Configure SSH Key-Based Authentication on a Linux Server | DigitalOcean. La seule précaution est de s’asurer que le compte utilisé donne accès en écriture sur les fichiers outils cibles (camotics, camban, fusion, linuxcnc et tout ce que vous voulez transferer).

2.2.3 Création du fichier xml décrivant tous les fichier à transférer

Un fichier xml permet de décrire tous les fichiers à transférer. Il suffit de prendre l’exemple du.zip et de l’adapter suivant votre usage. Les clefs sont:

« id »: « laser.acolab.fr », nom ou adresse Ip de la machine cible
« type »: « windows », type linux ou windows de la machine cible
« username » : « xxxxxx », compte utilisé par sftp
« fic_key » : « C:\xxxx\yyyyy\.ssh\(nom du fichier clef privée) », fichier adresse pour la clef privé (ce fichier doit être particulièrement protégé).
« CN »:« GRande-CN », nom de la CN concernée.
« type_fichier »:« cambam », type de fichier (cambam, fusion … ou autre)
« fichier_in »: « tools_Grande_CNC.json », nom du fichier local qui doit impérativement se trouver dans le repertoire « fichier_a_deployer »
« fichier_out »: « E:\produits\CAMotics\examples\camotics\Shapeoko_Acolab.json » nom complet du fichier sur la machine cible en respectant la syntaxe de l’OS cible (windows ou linux)

Il peut y avoir autant de fichiers et de machines cibles que necessaire. Le fichier acolab.xml trouvé dans le fichier ZIP donne un exemple pour 4 fichiers transférés sur 2 machines.

Attention aucun paramètre n’est demandé durant le déroulement du programme. Tout doit être décrit dans le fichier ./xml/xml.acolab. Les fichiers à transférer doivent se trouver dans le repertoire ./fichier_a_deployer et doivent toujours avoir le nom décrit dans le fichier xml. Durant le déroulement du programme, les fichiers transférés correctement apparaissent en vert, alors que les raisons pour non transfert aparaissent en rouge:

  • fichier inexistant dans ./fichier_a_deployer

  • Machine cible eteinte au moment du transfert


image

2.3 Syntaxe

A partir du répertoire ou se trouve le python, les syntaxes possibles sont:

Tansfert pour toutes les machines cibles de tous les fichiers décrits dans le fichier acolab.xml (cambam, camotics, linuxcnc, fusion (« all » est le défaut))

  • py deploiement_fichiers_outils.py acolab
    ou
  • py deploiement_fichiers_outils.py acolab all

Transfert de tous les fichiers pour une seule des machines (Grande-CN.acolab.fr) décrites dans le fichier pierre.xml.