Comment créer et mettre à jour des paquets Medulla en masse à partir d’un fichier CSV ?
S'applique à : Medulla Serveur
Version : Dernière version compatible avec le module pkgs
Environnement : On-Premise / Linux
Catégorie : Administration / Gestion des paquets
Script : medulla_import_csv.py
Le script medulla_import_csv.py permet de créer ou de mettre à jour en masse des paquets logiciels Medulla à partir d'un fichier CSV.
Chaque ligne du CSV correspond à un paquet. Le script utilise la même API que la console d'administration Medulla (mmc-agent, module pkgs).
Medulla prend ainsi en charge :
- Le rangement des paquets dans les partages appropriés.
- Leur enregistrement en base de données.
- La gestion des droits sur les fichiers.
- Le calcul des empreintes des paquets.
- La synchronisation vers les relais.
Le script permet notamment :
- La création de plusieurs paquets en une seule opération.
- La mise à jour de paquets existants.
- L'importation de paquets Windows, Linux et macOS.
- La définition des commandes d'installation et de désinstallation.
- L'association de fichiers complémentaires.
- La sélection des organisations et des partages.
- La vérification complète avant importation.
- La sauvegarde automatique avant modification.
- La reprise d'une importation après un échec.
- La génération d'un rapport détaillé.
Information : Le script ne modifie que les paquets présents dans le CSV. Les autres paquets du serveur ne sont pas modifiés. L'importation ne déclenche aucun déploiement sur les postes et n'active aucune convergence.
1. Quels sont les prérequis ?
Le script doit être exécuté directement sur le serveur Medulla, avec les privilèges root.
| Élément | Prérequis |
|---|---|
| Système | Serveur Linux hébergeant Medulla. |
| Python | Python 3, sans dépendance Python supplémentaire. |
| Utilisateur système | root. |
| Compte MMC | Compte disposant des droits d'écriture sur les partages concernés. |
| Service | mmc-agent opérationnel et accessible. |
| Base de données | Accès à la base configurée pour le module pkgs. |
| Sauvegarde | mysqldump ou mariadb-dump. |
| Stockage | Espace suffisant pour les paquets, les fichiers temporaires et les sauvegardes. |
Le script utilise notamment les emplacements suivants :
| Chemin | Utilisation |
|---|---|
/etc/mmc/agent/config.ini |
Configuration de mmc-agent. |
/etc/mmc/agent/config.ini.local |
Surcharge locale éventuelle. |
/etc/mmc/plugins/pkgs.ini |
Configuration du module pkgs. |
/etc/mmc/plugins/pkgs.ini.local |
Surcharge locale éventuelle. |
/var/lib/pulse2/packages/ |
Répertoire des paquets Medulla. |
/var/lib/pulse2/package-server-tmpdir/ |
Préparation temporaire des fichiers. |
/var/lib/pulse2/sauvegardes_import_csv/ |
Sauvegardes des importations. |
2. Où télécharger le script et le fichier CSV d'exemple ?
Télécharger le script Python
Télécharger medulla_import_csv.py
Depuis le serveur Medulla :
wget https://dl.medulla-tech.io/ma/medulla_import_csv.py
Pour actualiser le script :
wget -N https://dl.medulla-tech.io/ma/medulla_import_csv.py
Télécharger le fichier CSV d'exemple
Un fichier CSV d'exemple est proposé pour faciliter la préparation des paquets.
Télécharger le fichier CSV d'exemple
Il contient trois exemples de paquets :
- 7-Zip : installation et désinstallation d'un paquet MSI Windows.
- Notepad++ : utilisation de scripts PowerShell et d'un installateur complémentaire.
- Agent supervision : installation d'un paquet Linux.
Le fichier CSV d'exemple reste inchangé.
Information : Le nom exact du fichier CSV sur le serveur de téléchargement doit être confirmé. Le script permet également de générer localement le même modèle à partir de ses exemples intégrés.
Générer un modèle CSV
python3 medulla_import_csv.py --modele paquets.csv
Cette commande crée un fichier CSV avec les 21 colonnes reconnues par le script et les trois exemples.
Le script refuse d'écraser un fichier existant.
3. Comment utiliser le script ?
La procédure standard comporte quatre opérations.
Étape 1 : préparer le CSV
Télécharger le fichier d'exemple ou générer un modèle :
python3 medulla_import_csv.py --modele paquets.csv
Modifier les lignes dans un tableur ou un éditeur de texte, en renseignant les paquets à créer ou à mettre à jour.
Étape 2 : consulter les organisations et les partages
sudo python3 medulla_import_csv.py --lister
La commande affiche les partages accessibles au compte MMC, leurs droits, leurs quotas et les organisations associées.
Étape 3 : effectuer une vérification complète
sudo python3 medulla_import_csv.py paquets.csv --verifier
Cette commande effectue tous les contrôles sans modifier les paquets ni le CSV :
- Format et structure du CSV.
- Valeurs et fichiers référencés.
- Organisations et partages Medulla.
- Droits d'écriture et quotas.
- UUID et paquets déjà existants.
- Possibilité de sauvegarder la base de données.
- Droits d'écriture sur les répertoires.
- Espace disque disponible.
Important : Dans cette version, --verifier effectue une vérification complète en se connectant à Medulla. Pour vérifier uniquement le CSV et les fichiers sans connexion au serveur, utiliser --verifier --hors-ligne.
Étape 4 : lancer l'importation
sudo python3 medulla_import_csv.py paquets.csv
Le script refait tous les contrôles, présente un résumé et demande confirmation :
Lancer l'import (sauvegarde puis creation / mise a jour) ? [o/N]
Répondre o pour poursuivre.
Si la confirmation est refusée, aucune modification n'est effectuée.
Pour afficher davantage d'informations :
sudo python3 medulla_import_csv.py paquets.csv -v
4. Comment vérifier un CSV sans connexion à Medulla ?
Le mode hors ligne permet de préparer et de vérifier un CSV sur une autre machine.
python3 medulla_import_csv.py paquets.csv --verifier --hors-ligne
Ce mode vérifie :
- L'encodage et le format CSV.
- Les colonnes et les valeurs.
- L'existence et la lisibilité des fichiers.
- Les extensions et les commandes générées.
- Les doublons internes au CSV.
Il ne vérifie pas :
- Les organisations et partages réellement disponibles.
- Les droits et les quotas Medulla.
- Les UUID existants sur le serveur.
- La disponibilité de la sauvegarde.
- L'espace disque du serveur.
Attention : Une vérification hors ligne réussie ne garantit pas que l'importation sera acceptée sur le serveur. Effectuer une vérification complète sur Medulla avant publication.
5. Comment préparer le fichier CSV ?
Le fichier doit être enregistré en UTF-8.
Les fichiers UTF-8 avec BOM, notamment ceux exportés depuis Excel, sont acceptés.
Les séparateurs reconnus sont :
- La virgule (
,). - Le point-virgule (
;).
Le séparateur est automatiquement détecté à partir de l'en-tête.
Les colonnes peuvent être placées dans n'importe quel ordre. Seules les colonnes utiles sont nécessaires.
Colonnes obligatoires
Le CSV doit contenir :
nom.partageouorganisation.script_installationouscript_desinstallation.
Chaque ligne doit également renseigner un nom, une destination et au moins une opération.
Liste complète des colonnes
| Colonne | Description | Valeur par défaut |
|---|---|---|
nom |
Nom du paquet (1 024 caractères maximum). | Obligatoire |
version |
Version du paquet (50 caractères maximum). | 1.0 |
description |
Description (255 caractères maximum). | Nom du paquet |
os |
win, linux ou mac. | win |
partage |
Nom du partage Medulla. | — |
organisation |
Organisation dont le partage sera utilisé. | — |
script_installation |
Fichier d'installation. | — |
arguments_installation |
Arguments supplémentaires. | — |
timeout_installation |
Délai maximal en secondes. | 3600 |
script_desinstallation |
Fichier de désinstallation. | — |
arguments_desinstallation |
Arguments supplémentaires. | — |
timeout_desinstallation |
Délai maximal en secondes. | 3600 |
fichiers |
Fichiers complémentaires séparés par |. | — |
redemarrage |
1 pour redémarrer après succès, sinon 0. | 0 |
inventaire_apres |
noforced, forced ou non. | noforced |
inventaire_logiciel |
Logiciel associé à l'inventaire. | — |
inventaire_version |
Version du logiciel associé. | — |
inventaire_editeur |
Éditeur du logiciel associé. | — |
licences |
Nombre de licences, entier positif ou nul. | — |
editable |
oui : mode expert ; non : mode manuel. | oui |
uuid |
Identifiant du paquet, ajouté après création. | Vide |
Les champs de version et d'inventaire sont limités à 50 caractères. Le champ licences accepte jusqu'à 20 caractères.
6. Quels paquets contient le fichier d'exemple ?
Le fichier CSV d'exemple contient trois paquets. Ces exemples ne sont pas modifiés.
Exemple 1 : 7-Zip
| Paramètre | Valeur |
|---|---|
| Nom | 7-Zip |
| Version | 24.08 |
| Description | 7-Zip x64 silencieux |
| Système | Windows |
| Partage | global |
| Installation | installeurs/7z2408-x64.msi |
| Désinstallation | installeurs/7z2408-x64.msi |
| Logiciel inventaire | 7-Zip |
| Version inventaire | 24.08 |
| Éditeur | Igor Pavlov |
Exemple 2 : Notepad++
| Paramètre | Valeur |
|---|---|
| Nom | Notepad++ |
| Version | 8.9.8.1 |
| Système | Windows |
| Partage | global |
| Installation | scripts/install_npp.ps1 |
| Arguments | -Silent |
| Désinstallation | scripts/uninstall_npp.ps1 |
| Fichier complémentaire | installeurs/npp.8.9.8.1.Installer.x64.exe |
| Timeout installation | 1800 secondes |
Exemple 3 : Agent supervision
| Paramètre | Valeur |
|---|---|
| Nom | Agent supervision |
| Version | 2.1 |
| Système | Linux |
| Organisation | Client A |
| Installation | scripts/install_agent.sh |
| Fichier complémentaire | installeurs/agent_2.1_amd64.deb |
| Redémarrage | 0 |
| Inventaire après déploiement | forced |
Information : Les chemins des fichiers d'exemple doivent être adaptés à votre environnement. Les installateurs et scripts référencés doivent être présents et lisibles avant la vérification.
7. Comment fonctionnent les scripts d'installation et de désinstallation ?
Chaque paquet peut comporter deux sections indépendantes :
- Installation : installe le logiciel ou exécute l'action prévue.
- Désinstallation : supprime le logiciel ou exécute l'action prévue.
Les deux sections ne s'enchaînent pas automatiquement. L'opération est choisie au moment du déploiement dans Medulla.
Commandes générées selon le système
| Système | Extension | Commande générée |
|---|---|---|
| Windows | .ps1 | powershell.exe -NoProfile -ExecutionPolicy Bypass -File "script.ps1" |
| Windows | .bat / .cmd | cmd.exe /c "script.bat" |
| Windows | .vbs | cscript.exe //NoLogo "script.vbs" |
| Windows | .msi | msiexec.exe. |
| Windows | .exe | Exécution directe. |
| Linux / macOS | .sh | /bin/bash "script.sh" |
| Linux / macOS | .py | python3 "script.py" |
| macOS | .pkg | installer -pkg "logiciel.pkg" -target / |
Cas particulier des MSI
Sans arguments personnalisés, les commandes suivantes sont générées automatiquement.
Installation :
msiexec.exe /i "logiciel.msi" /qn /norestart
Désinstallation :
msiexec.exe /x "logiciel.msi" /qn /norestart
Si des arguments personnalisés sont renseignés, ils sont ajoutés à la commande et les options silencieuses ne sont plus ajoutées automatiquement.
Cas particulier des EXE
Les programmes EXE sont exécutés directement.
Les options d'installation silencieuse doivent être renseignées dans arguments_installation.
Si aucun argument n'est fourni, le script affiche un avertissement : l'installateur peut attendre une intervention utilisateur jusqu'à expiration du timeout.
Cas particulier des PKG macOS
Les fichiers .pkg sont acceptés uniquement pour l'installation.
Pour désinstaller un paquet macOS, il faut fournir un script .sh ou .py.
Codes retour
Un code retour différent de zéro provoque l'échec de l'opération.
Le délai maximal est défini par les colonnes timeout_installation et timeout_desinstallation.
La valeur par défaut est de 3600 secondes.
8. Comment gérer les fichiers complémentaires ?
Les chemins peuvent être absolus ou relatifs au dossier contenant le CSV.
Exemple de chemin relatif :
scripts/install.ps1
Exemple de chemin absolu :
/opt/medulla/installeurs/setup.exe
La colonne fichiers permet d'ajouter plusieurs fichiers complémentaires, séparés par le caractère |.
installeurs/setup.exe|configuration/settings.ini|scripts/postinstall.ps1
Tous les fichiers sont copiés à la racine du paquet.
Le script refuse :
- Les fichiers inexistants ou illisibles.
- Les scripts vides.
- Les extensions incompatibles avec le système cible.
- Les entrées vides dans une liste de fichiers.
- Deux fichiers différents portant le même nom.
- Les fichiers réservés
conf.jsonetxmppdeploy.json.
Un fichier complémentaire vide produit un avertissement, sans bloquer l'importation.
Corrections automatiques des scripts
Le script peut appliquer certaines corrections sur les copies des fichiers envoyées dans Medulla.
- Linux / macOS : conversion des fins de ligne Windows CRLF en LF pour les fichiers .sh et .py.
- PowerShell : ajout d'un BOM UTF-8 pour les scripts .ps1 contenant des caractères non ASCII, lorsque le fichier est en UTF-8 sans BOM.
Ces corrections sont appliquées uniquement aux copies utilisées pour le paquet. Les fichiers d'origine ne sont pas modifiés.
Les corrections concernent les scripts de moins de 10 Mo.
9. Comment fonctionnent les organisations et les partages ?
Chaque paquet est enregistré dans un partage Medulla.
Le partage global est destiné aux paquets partagés entre les organisations autorisées.
Un partage propre à une organisation permet de limiter l'accès aux paquets concernés.
Dans le CSV, il est possible d'indiquer :
- Le nom du partage dans
partage. - Le nom de l'organisation dans
organisation.
Si les deux champs sont renseignés, ils doivent correspondre au même partage.
Utiliser le nom complet d'une organisation
Pour éviter toute ambiguïté :
Entité racine > Revendeur > Client A
Consulter les partages disponibles
sudo python3 medulla_import_csv.py --lister
Exemple de résultat :
PARTAGE DROITS QUOTA ORGANISATION
Client A rw 0.2/1 Go Entite racine > Client A
Client B r illimite Entite racine > Client B
global rw illimite Partage global
Le script refuse notamment :
- Une organisation ou un partage inconnu.
- Un partage sans droit d'écriture.
- Un quota insuffisant.
- Une organisation ambiguë.
- Deux partages portant le même nom.
- Un changement de partage sur un paquet existant.
Le changement de partage doit être effectué dans la console Medulla.
Information : Le script ne crée ni organisation ni partage. Ils doivent exister avant l'importation.
10. Quels contrôles sont effectués avant l'importation ?
Le script effectue six étapes.
| Étape | Contrôle ou opération | En cas d'erreur |
|---|---|---|
| 1. Format CSV | Encodage, séparateur, colonnes, cellules et guillemets. | Arrêt sans modification. |
| 2. Contenu | Fichiers, valeurs, organisations, droits, quotas, UUID et doublons. | Arrêt sans modification. |
| 3. Serveur | Sauvegarde possible, droits d'écriture et espace disque. | Arrêt sans modification. |
| 4. Confirmation | Présentation du résumé et demande d'autorisation. | Refus : arrêt sans modification. |
| 5. Sauvegarde | Base de données et fichiers des paquets mis à jour. | Arrêt sans modification. |
| 6. Importation | Création ou mise à jour de chaque paquet. | Échec signalé, traitement poursuivi. |
Les cinq premières étapes doivent réussir avant toute modification des paquets Medulla.
Contrôles du format
Le script vérifie :
- L'encodage UTF-8.
- La cohérence du séparateur.
- Les colonnes inconnues, absentes ou en double.
- Les lignes contenant un nombre incorrect de cellules.
- Les guillemets non fermés.
- Les retours à la ligne et tabulations dans les cellules.
Les lignes entièrement vides sont ignorées.
Contrôles du contenu
Le script vérifie notamment :
- Les champs obligatoires.
- La validité du système cible.
- Les scripts et fichiers référencés.
- Les commandes générées.
- Les délais d'exécution.
- Les informations d'inventaire.
- Les valeurs de redémarrage et de licences.
- Les longueurs maximales des champs.
- Les doublons de nom, version et système.
- Les UUID existants.
Contrôles du serveur
Avant l'importation, le script vérifie également :
- La disponibilité de mysqldump ou mariadb-dump.
- Les identifiants d'accès à la base.
- La possibilité d'effectuer une sauvegarde réelle.
- Les droits d'écriture sur le CSV.
- Les droits d'écriture sur les répertoires temporaires et de sauvegarde.
- L'espace disque disponible.
Pour les fichiers des paquets, l'espace estimé comprend deux fois leur taille totale, plus une marge de 200 Mo.
La sauvegarde est également prise en compte dans les besoins d'espace disque.
11. Comment créer ou mettre à jour un paquet existant ?
Créer un nouveau paquet
Pour créer un paquet, laisser la colonne uuid vide.
Medulla attribue un UUID lors de la création.
Le script inscrit immédiatement cet identifiant dans le CSV dès qu'il est obtenu.
Mettre à jour un paquet
Pour mettre à jour un paquet existant :
- Conserver son UUID dans le CSV.
- Modifier les informations souhaitées.
- Mettre à jour les fichiers nécessaires.
- Relancer la vérification et l'importation.
sudo python3 medulla_import_csv.py paquets.csv
Le paquet est mis à jour sans duplication.
Ses anciens fichiers sont remplacés par ceux définis dans le CSV.
La date de création et le créateur d'origine sont conservés.
Adopter un paquet déjà présent dans Medulla
Si un paquet de même nom, version, système et partage existe déjà, mais que son UUID n'est pas renseigné dans le CSV, le script refuse normalement l'importation pour éviter un doublon.
Deux solutions sont possibles :
- Renseigner manuellement l'UUID indiqué par le script.
- Utiliser l'option
--adopter-existants.
sudo python3 medulla_import_csv.py paquets.csv --adopter-existants
Cette option permet de mettre à jour le paquet existant plutôt que d'en créer un nouveau.
Son UUID est inscrit dans le CSV après la sauvegarde.
Attention : L'option --adopter-existants met à jour les paquets correspondants. Vérifier le résumé du lot avant de confirmer l'importation.
12. Comment fonctionne la sauvegarde automatique ?
Avant la première modification, le script crée un dossier de sauvegarde horodaté :
/var/lib/pulse2/sauvegardes_import_csv/AAAAMMJJ_HHMMSS/
Ce dossier contient :
| Fichier | Description |
|---|---|
pkgs.sql.gz |
Sauvegarde complète de la base pkgs, lorsque celle-ci porte son nom par défaut. |
paquets_avant_mise_a_jour.tar.gz |
Fichiers des paquets existants concernés par les mises à jour. |
| Copie du CSV | État du fichier avant importation. |
RESTAURATION.txt |
Procédure de restauration adaptée au serveur. |
L'archive des anciens fichiers est créée uniquement lorsque le lot comporte des mises à jour.
Le nom de l'archive SQL dépend du nom de la base configurée.
Configuration de la base
Les paramètres sont lus dans :
/etc/mmc/plugins/pkgs.ini
/etc/mmc/plugins/pkgs.ini.local
Le script accepte les mots de passe en clair ou au format {base64}.
Le mot de passe est transmis à l'utilitaire de sauvegarde par un fichier temporaire protégé, et non dans la ligne de commande.
Le script vérifie le code retour de l'utilitaire et la présence de la fin du dump.
Si la sauvegarde échoue, l'importation ne démarre pas.
Changer le dossier de sauvegarde
sudo python3 medulla_import_csv.py paquets.csv --dossier-sauvegarde /backup/medulla
Attention : Les sauvegardes ne sont pas supprimées automatiquement. Il est recommandé de prévoir une politique de conservation et de surveiller l'espace disque.
13. Comment restaurer les paquets après une importation ?
Chaque sauvegarde contient un fichier RESTAURATION.txt avec les commandes adaptées à l'environnement.
La procédure consiste à :
- Arrêter mmc-agent.
- Restaurer la base de données.
- Restaurer les anciens fichiers des paquets mis à jour, si l'archive existe.
- Redémarrer mmc-agent.
Exemple indicatif pour une base nommée pkgs :
systemctl stop mmc-agent
zcat /var/lib/pulse2/sauvegardes_import_csv/AAAAMMJJ_HHMMSS/pkgs.sql.gz | mysql -u mmc -p
tar -xzf /var/lib/pulse2/sauvegardes_import_csv/AAAAMMJJ_HHMMSS/paquets_avant_mise_a_jour.tar.gz -C /
systemctl start mmc-agent
La commande de restauration des fichiers ne doit être exécutée que si l'archive existe.
Important : La restauration SQL remet l'ensemble de la base pkgs dans son état antérieur. Les modifications effectuées depuis la sauvegarde peuvent être perdues.
Les répertoires des paquets créés pendant l'importation peuvent rester présents sur le disque.
Leurs UUID figurent dans le CSV et le rapport afin de permettre leur identification et leur suppression depuis la console Medulla.
14. Que se passe-t-il si un paquet échoue pendant l'importation ?
Lorsqu'une erreur survient pendant la publication d'un paquet, le script signale l'échec et poursuit le traitement des paquets suivants.
Le rapport indique le résultat de chaque opération.
Si la création a déjà commencé, l'UUID peut avoir été inscrit dans le CSV avant l'échec.
Une nouvelle exécution du même CSV peut alors reprendre le traitement sous forme de mise à jour plutôt que de créer un doublon.
Il est recommandé de :
- Consulter le rapport d'importation.
- Identifier et corriger la cause de l'erreur.
- Vérifier le CSV et les UUID.
- Relancer la vérification complète.
- Reprendre l'importation.
Attention : Le script ne réalise pas de restauration automatique en cas d'échec pendant la publication. Une opération interrompue peut laisser un paquet partiellement modifié. La sauvegarde permet un retour arrière manuel.
15. Comment consulter le rapport d'importation ?
À la fin du traitement, le script génère un rapport texte dans le même dossier que le CSV.
Pour un fichier nommé paquets.csv, le rapport est :
paquets_rapport.txt
Le rapport indique :
- La date de l'importation.
- Le fichier CSV utilisé.
- Le compte MMC.
- Le dossier de sauvegarde.
- Les paquets créés ou mis à jour.
- Les UUID correspondants.
- Les erreurs éventuelles.
- Le bilan global.
| Statut | Signification |
|---|---|
CREE |
Le paquet a été créé. |
MAJ |
Le paquet existant a été mis à jour. |
ECHEC |
La publication a échoué. |
Pour consulter le rapport :
cat paquets_rapport.txt
Les rapports des exécutions suivantes sont ajoutés au même fichier.
16. Comment utiliser le mode verbeux ?
L'option -v ou --verbeux affiche le détail des contrôles et des opérations.
sudo python3 medulla_import_csv.py paquets.csv --verifier -v
Elle permet notamment de consulter :
- La connexion au service mmc-agent.
- Les partages accessibles, leurs droits et leurs quotas.
- Les commandes construites pour chaque paquet.
- Les résultats des vérifications.
- Les contrôles de sauvegarde et d'espace disque.
- Les fichiers copiés.
- Les appels à l'API Medulla, leurs durées et leurs réponses.
Les mots de passe ne sont pas affichés dans les traces de diagnostic prévues par le script.
17. Quelles sont les options disponibles ?
| Option | Description |
|---|---|
--modele FICHIER |
Génère un CSV d'exemple. |
--lister |
Liste les organisations et partages accessibles. |
--verifier |
Effectue tous les contrôles sur le serveur, sans modification. |
--verifier --hors-ligne |
Vérifie le format et les fichiers sans connexion au serveur. |
--adopter-existants |
Met à jour les paquets existants correspondants et inscrit leurs UUID dans le CSV. |
--oui |
Supprime la demande de confirmation. |
--utilisateur NOM |
Utilise un compte MMC différent de root. |
-v / --verbeux |
Affiche le détail des opérations. |
--dossier-sauvegarde CHEMIN |
Personnalise le dossier de sauvegarde. |
--help |
Affiche l'aide du script. |
Authentification MMC
Le compte MMC utilisé par défaut est root.
Le mot de passe est demandé au lancement.
Pour utiliser un autre compte :
sudo python3 medulla_import_csv.py paquets.csv --utilisateur NOM
Pour une exécution automatisée, le script accepte la variable d'environnement MMC_PASSWORD.
Sécurité : Évitez de placer des mots de passe en clair dans des scripts ou des commandes conservés dans l'historique du shell. Utilisez un mécanisme de gestion des secrets adapté.
18. Quelles sont les erreurs les plus fréquentes ?
| Message | Cause probable | Solution |
|---|---|---|
fichier introuvable |
Fichier absent ou chemin incorrect. | Vérifier le chemin indiqué dans le CSV. |
fichier vide |
Script de taille nulle. | Fournir un script valide. |
extension non geree |
Extension incompatible avec le système. | Utiliser une extension prise en charge. |
trop long |
Valeur dépassant la limite du champ. | Réduire la longueur du texte. |
deux fichiers differents nommes X |
Collision entre fichiers. | Utiliser des noms distincts. |
caractere non pris en charge par Windows |
Caractère incompatible avec cp1252. | Adapter les arguments ou le nom du fichier. |
meme nom/version/os |
Doublon dans le CSV. | Corriger les lignes concernées. |
existe deja dans le partage |
Paquet existant sans UUID renseigné. | Renseigner l'UUID ou utiliser --adopter-existants. |
uuid absent de Medulla |
Identifiant inconnu. | Corriger l'UUID ou vider la cellule pour créer. |
partage inconnu |
Partage inexistant ou inaccessible. | Consulter les partages avec --lister. |
organisation ambigue |
Plusieurs organisations portent le même nom court. | Utiliser le nom complet. |
en lecture seule |
Compte sans droit d'écriture. | Utiliser un compte autorisé. |
quota |
Espace insuffisant sur le partage. | Libérer de l'espace ou augmenter le quota. |
mysqldump introuvable |
Utilitaire de sauvegarde absent. | Installer le client MariaDB ou MySQL. |
acces a la base refuse |
Identifiants ou droits SQL incorrects. | Vérifier la configuration du module pkgs. |
espace disque insuffisant |
Stockage insuffisant. | Libérer de l'espace ou changer le dossier de sauvegarde. |
mmc-agent injoignable |
Service indisponible ou problème de connexion. | Vérifier mmc-agent. |
Pour vérifier le service :
systemctl status mmc-agent
19. Questions fréquentes
Peut-on importer plusieurs centaines de paquets ?
Oui. Le script traite les lignes successivement. La durée dépend du nombre de paquets, de la taille des fichiers et des performances du serveur.
Les logiciels sont-ils automatiquement déployés ?
Non. L'importation crée ou met à jour les paquets. Le déploiement et la convergence sont des opérations distinctes.
Peut-on importer des paquets pour plusieurs organisations ?
Oui. Chaque ligne peut désigner un partage ou une organisation différente, selon les droits du compte MMC.
Peut-on créer un paquet contenant uniquement une désinstallation ?
Oui. Le script accepte un paquet comportant uniquement une section de désinstallation.
Peut-on utiliser Excel ?
Oui. Le fichier doit être enregistré au format CSV UTF-8.
Peut-on relancer plusieurs fois le même CSV ?
Oui. Les UUID permettent de mettre à jour les paquets existants sans les dupliquer.
Peut-on reprendre une importation interrompue ?
Oui, après correction de l'erreur. Les UUID inscrits dans le CSV permettent de reprendre les créations déjà commencées.
Les fichiers d'installation sont-ils téléchargés automatiquement ?
Non. Les fichiers doivent être présents sur le serveur ou sur la machine effectuant une vérification hors ligne.
Peut-on déplacer un paquet vers un autre partage ?
Non. Cette opération doit être effectuée dans la console Medulla.
Peut-on créer des organisations depuis le CSV ?
Non. Les organisations et leurs partages doivent déjà exister.
Peut-on automatiser les importations ?
Oui. L'option --oui supprime la demande de confirmation.
sudo python3 medulla_import_csv.py paquets.csv --oui
Les contrôles et la sauvegarde restent effectués avant la publication.
20. Bonnes pratiques
- Utiliser le fichier CSV d'exemple fourni avec le script.
- Conserver les CSV après importation afin de préserver les UUID.
- Effectuer une vérification complète avec
--verifier. - Utiliser
--listerpour vérifier les partages et les droits. - Tester les premières importations sur un petit lot.
- Utiliser le mode verbeux pour les premiers imports et les diagnostics.
- Tester les installations et désinstallations sur des postes pilotes.
- Éviter le partage global pour les paquets réservés à une organisation.
- Vérifier le résumé avant d'utiliser
--adopter-existants. - Conserver les sauvegardes nécessaires à un retour arrière.
- Surveiller l'espace disque occupé par les sauvegardes.
- Consulter le rapport après chaque importation.
21. Récapitulatif des commandes
Télécharger le script :
wget https://dl.medulla-tech.io/ma/medulla_import_csv.py
Actualiser le script :
wget -N https://dl.medulla-tech.io/ma/medulla_import_csv.py
Afficher l'aide :
python3 medulla_import_csv.py --help
Générer un modèle CSV :
python3 medulla_import_csv.py --modele paquets.csv
Lister les partages :
sudo python3 medulla_import_csv.py --lister
Vérifier hors ligne :
python3 medulla_import_csv.py paquets.csv --verifier --hors-ligne
Vérifier complètement sur le serveur :
sudo python3 medulla_import_csv.py paquets.csv --verifier
Vérifier en mode détaillé :
sudo python3 medulla_import_csv.py paquets.csv --verifier -v
Importer les paquets :
sudo python3 medulla_import_csv.py paquets.csv
Importer en mode détaillé :
sudo python3 medulla_import_csv.py paquets.csv -v
Adopter les paquets existants :
sudo python3 medulla_import_csv.py paquets.csv --adopter-existants
Importer sans confirmation :
sudo python3 medulla_import_csv.py paquets.csv --oui
Personnaliser le dossier de sauvegarde :
sudo python3 medulla_import_csv.py paquets.csv --dossier-sauvegarde /backup/medulla
Consulter le rapport :
cat paquets_rapport.txt
Ressources :
Script Python : medulla_import_csv.py
Fichier CSV d'exemple (nom à confirmer sur le serveur) : exemple_paquets.csv
Répertoire de téléchargement : dl.medulla-tech.io/ma/
Documentation Medulla : docs.medulla-tech.io