Opsi (Open PC Server Integration) est un outil de gestion de clients Windows basé sur un serveur Linux et sous licence AGPLv3 (hors code des modules cofinancés), version modifiée et orientée serveurs de la licence GPLv3. Son code source est la propriété de la société uib gmgh et son représentant en France/Belgique est la société Opensides.
Ses fonctionnalités principales sont :
- Installation automatisée via PXE de systèmes d’exploitation clients Windows par le biais d’une image
- Distribution automatique des logiciels via une connexion agent/serveur
- Intégration automatique des drivers en se basant sur l’ID de ceux-ci
- Inventaires matériels et logiciels
- Dépôts logiciels multiples et décentralisés
Objectif
L’objectif de cet article est le test d’un script Opsi Winst en local sur un client avant création d’un nouveau produit sur le serveur et en vue d’un déploiement ultérieur sur un parc informatique.
Réalisation
Sur un client de test, même si l’agent Opsi n’est pas installé, il est possible de vérifier qu’un script est fonctionnel grâce à l’exécutable winst32.exe. Pour les tests qui suivent, une fois l’exécutable récupéré, le serveur Opsi n’est pas utilisé ou requis.
Pour cela, récupérer sur le serveur Opsi le dossier suivant et le copier en local sur le poste client servant de test :
/var/lib/opsi/depot/opsi-winst/files/opsi-winst/
ou, en accédant au partage [opsi_depot] (RO) par son adresse UNC :
\\opsi.opensharing.priv\opsi_depot\opsi-winst\files\opsi-winst\
ou encore, si l’agent Opsi est déjà installé sur le client considéré :
C:\Program Files\opsi.org\opsi-client-agent\opsi-winst\
Ce dossier contient notamment winst32.exe mais l’ensemble des fichiers sont nécessaires.
Il faut ensuite créer un dossier en local où sera stocké le script à évaluer, par exemple C:\test\ hébergeant le script setup32.ins
Lancer le programme winst32.exe et renseigner la localisation du script à tester avec « Choisir Script ».
Puis « Démarrer » pour tester le script.
Il suffit ensuite d’analyser les logs affichés pour corriger d’éventuelles anomalies.
Il est également possible d’afficher le retour de l’interface avec le bouton « Afficher l’interface ».
Exemple de script minimal permettant de tester un script d’installation setup32.ins en local :
[Actions] DefVar $LogDir$ DefVar $ProductId$ DefVar $InstallDir$ DefVar $ExitCode$ Set $LogDir$ = "%opsiLogDir%" Set $ProductId$ = "produit-test" Set $InstallDir$ = "%ProgramFiles32Dir%\" comment "Show product picture" ShowBitmap "%ScriptPath%\" + $ProductId$ + ".png" $ProductId$ Message "Installing " + $ProductId$ + " ..." comment "Start setup program" ChangeDirectory "%SCRIPTPATH%" Winbatch_install Sub_check_exitcode comment "Windows commands with command prompt window" DOSBatch_1 winst /32Bit Sub_check_exitcode comment "Windows commands without command prompt window" DOSInAnIcon_1 winst /32Bit Sub_check_exitcode comment "Copy files" Files_install /32Bit comment "Patch Registry" Registry_install /32Bit comment "Create shortcuts" LinkFolder_install [Winbatch_install] [DOSBatch_1] [DOSInAnIcon_1] [Files_install] [Registry_install] [LinkFolder_install] [Sub_check_exitcode] comment "Test for installation success via exit code" set $ExitCode$ = getLastExitCode if ($ExitCode$ = "0") comment "Looks good: setup program gives exitcode zero" else comment "Setup program gives a exitcode unequal zero: " + $ExitCode$ logError "Fatal: Error code : " + $ExitCode$ isFatalError endif
Aller plus loin