Il m’est arrivé récemment d’avoir besoin de déployer un agent sur plusieurs machines à travers le monde, de manière simple et automatique.
Au début j’utilisait un script Python complet (pour l’installation et pour l’agent final), puis je me suis tourné sur la version « package » complet que pouvait offrir un système tel que Debian ou Ubuntu. Je pense compiler les packages pour d’autres distribution pour un panel plus large.
Pour se faire, que votre package soit un script ou un programme compilé, il faut l’ordonner correctement. En effet, la structure du package sera la structure finale sur le poste client.
Pour ma part, j’ai créé un répertoire
/package/myagent/
L’arborescence de ce répertoire est de la sorte (pour mon cas, vous pouvez l’adapter) :
DEBIAN/ control postinst postrm etc/ init.d/ myagent myagent/ config.cfg usr/ bin/ myagent share/ doc/ README copyright changelog
DEBIAN/control va contenir toutes les informations concernant le package (les * sont obligatoires)
Package* Source Version* Section (recommended) Priority (recommended) Architecture* Essential Depends et al Installed-Size Maintainer* Description* Homepage Built-Using
Exemple :
Package: myagent Version: 0.0.1 Architecture: all Priority: optional Depends: python3 Maintainer: Fabien <contact@email.com> Description: MyLittleAgent
DEBIAN/postinst : c’est un script qui sera exécuté à la fin de l’installation, ici l’initialisation du script de démarrage.
#!/bin/sh update-rc.d -f myagent defaults
De même, DEBIAN/prerm est appelé avant la suppression du package :
#!/bin/sh if [ "$1" = "remove" ]; then rm /usr/bin/myagent/*.pyc update-rc.d -f myagent remove fi
Il existe différents fichiers (preinst, postinst, prerm, postrm…). Les fichiers doivent avoir des droits en 755.
Le fichier DEBIAN/md5sums va contenir tous les checksum (en md5) des fichiers du package. Pour générer le fichier md5sums, on peut utiliser le code suivant (à exécuter depuis /package/myagent )
find . -type f ! -regex '.*.hg.*' ! -regex '.*?debian-binary.*' ! -regex '.*?DEBIAN.*' -printf '%P ' | xargs md5sum > DEBIAN/md5sums
On peut enfin créer le paquet :
dpkg-deb --build /package/myagent
Pour l’installer en mode local (et faire vos essais), vous pouvez utiliser les actions suivantes pour installer et supprimer votre paquet.
dpkg -i myagent.deb dpkg --remove --purge myagent
Vous pouvez également le rajouter à votre propre serveur de paquets.