Attention : le support de WAPT 2.0 a pris fin le 30 juin 2022.

Merci de mettre à jour sur la version supportée la plus récente

Problèmes fréquents

Il arrive parfois de configurer un serveur WAPT et d’oublier son mot de passe.

Pour réinitialiser le mot de passe SuperAdmin de la console WAPT, vous devez relancer le processus de post-configuration sur le serveur WAPT.

Réinitialiser le mot de passe du serveur WAPT Linux

  • se connecter au serveur avec SSH ;

  • se connecter avec l’utilisateur root (ou utiliser sudo) ;

  • lancer le script de post-configuration :

/opt/wapt/waptserver/scripts/postconf.sh

Attention

Pour éviter de casser la configuration existante du serveur WAPT, acceptez toutes les autres étapes, NE CRÉEZ PAS une nouvelle clé privée !

J’ai perdu ma clé privée WAPT

La sécurité et le bon fonctionnement de WAPT s’appuient sur les jeux de clés privés et de certificats publics.

La perte d’une clé privée nécessite donc de regénérer une nouvelle clé et les certifcats associés, et ensuite déployer sur le parc de machines les certificats pour la nouvelle clé.

Donc la procédure n’est pas anodine, même si elle est simple.

Procédure de renouvellement ou de création d’une clé privée

La procédure va être la suivante :

  • Generate a new private key/ public certificate. You will then keep the private key (file .pem) in a safe location;

  • Deploy the new certificate .crt on your clients in the folder C:\Program Files (x86)\ssl on Windows or /opt/wapt/ssl on Linux and MacOS manually, using a GPO or using an Ansible role (not documented);

Manipulation sur les paquets en conséquence

Les paquets du dépôt local étant signé avec l’ancienne clé, il convient de re-signer l’intégralité des paquets avec la nouvelle clé.

Afin de re-signer tous les paquets WAPT avec la nouvelle clé (les paquets logiciel et les paquets machine), utiliser la commande :

wapt-get sign-packages C:\\waptdev\\*

Je me suis fait voler ma clé privée

Attention

Toute la sécurité de WAPT repose sur la séquestration de cette clé privée.

WAPT ne gère pas encore la révocation des clés en utilisant une CRL.

La solution consiste à supprimer chaque certificat .crt associé à la clé privée volée, situé dans le dossier C:\Program Files (x86)\wapt\ssl.

Cette opération peut être effectuée à l’aide d’une GPO, manuellement, avec un paquet WAPT ou avec un rôle Ansible (non documenté).

Comment déplacer mon dépôt sur une autre partition

For any reason, you may need move the repository to another partition.

Your repository contains 3 folders which can be quite large:

  • wapt;

  • wapt-host;

  • waptwua;

Avertissement

Nous n’utiliserons pas la même méthode pour Linux et Windows.

Linux

Sous Linux, créez un point de montage sur fstab.

For this example, the second partition is named part2.

part2 is an ext4 formated partition.

Debian / Ubuntu

  • Create a temporary folder.

mkdir /mnt/tmp
  • Create a temporary mount point.

mount /dev/part2 /mnt/tmp
  • Move the folders.

mv /var/www /mnt/tmp
  • Unmont the partition.

umount /dev/part2
  • Edit the fstab file.

vi /etc/fstab
  • Add the following line to the fstab file.

# <file system> <mount point> <type>  <options> <dump>  <pass>
/dev/part2      /var/www      ext4    defaults  0       0
  • Mount the partition.

mount -a

Indication

If there is no error, the partition is mounted.

  • You can check by running.

df -h

#Result
Filesystem     1K-blocks     Used Available Use% Mounted on
dev/part2       15G          944M       14G   7% /var/www
  • Remove the temporary folder.

rm -rf mnt/tmp

Centos / RedHat

  • Create a temporary folder for copying the folders.

mkdir /mnt/tmp
  • Create a temporary mount point.

mount /dev/part2 /mnt/tmp
  • Move the folders.

mv /var/www/html /mnt/tmp
  • Unmont the partition.

umount /dev/part2
  • Edit the fstab file.

vi /etc/fstab
  • Add the following line to the fstab file.

# <file system> <mount point> <type>  <options> <dump>  <pass>
/dev/part2      /var/www/html      ext4    defaults  0       0
  • Mount the partition.

mount -a

Indication

If there is no error, the partition is mounted.

  • You can check by running.

df -h

#Result
Filesystem     1K-blocks     Used Available Use% Mounted on
dev/part2       15G          944M       14G   7% /var/www
  • Remove the temporary folder.

rm -rf mnt/tmp

Windows

Sous Windows, la meilleure méthode est de sauvegarder et restaurer le serveur sur la nouvelle partition.

Note

It is possible to install the server on another partition than C:.

Mon UUID BIOS bogue

  • Some problems happen sometimes with some BIOSes. WAPT uses the UUID of the machine as the host identifier.

  • The UUID is supposed to be unique. Unfortunately, for some OEMs and some manufacturing batches, BIOS UUID are identical.

  • The machine will register in the WAPT console but it will replace an existing device, considering that the machine has only changed its name.

Résolution

WAPT permet de générer un UUID aléatoire pour remplacer celui indiqué dans le BIOS.

wapt-get generate-uuid

Mon WAPTdeploy ne fonctionne pas

Symptôme

L’utilitaire waptdeploy n’arrive pas à installer l’agent WAPT.

Résolution

Ajouter l’argument waptsetupurl dans les paramètres de la stratégie de déploiement waptdeploy.

--waptsetupurl=https://monserverserveurwapt/waptagent.exe

Lancer WAPTdeploy localement

Lancer waptdeploy localement peut mettre en évidence un problème en affichant explicitement les erreurs.

Exemple de commande à lancer :

C:\Program Files (x86)\wapt\waptdeploy.exe --hash=2a9971aad083d6822b6e4d1ccfb9886be9429ec58bb13246810ff3d6a56ce887 --minversion=1.4.2.0 --wait=15

Dans notre cas le hash n’est pas le bon.

Error with WAPTDeploy

Error with WAPTDeploy

Attention

Ne pas oublier de lancer l’invite de commande en tant qu”Administrateur.

WAPTdeploy fonctionne manuellement mais ne fonctionne pas via GPO

Vérifier que la GPO est bien appliquée avec la commande :

gpresult /h gpo.html & gpo.html

Pour forcer l’application des GPO :

gpupdate /force

If waptdeploy does not show up you will have to double check the GPO settings:

# You may be using an old waptdeploy version, then

téléchargez la dernière version de waptdeploy sur le store WAPT.

# Thanks to Emmanuel EUGENE from French INSERM

qui a soumis cette cause possible du mauvais fonctionnement du waptdeploy, si vous répliquez des contrôleurs de domaine, assurez-vous que les GPOs sont correctement synchronisées entre vos DCs et que les ACLs sont appliquées de manière identique sur le SysVols.

Windows n’attend pas le réseau au démarrage

Par défaut Windows n’attend pas le réseau au démarrage de la machine.

Cela peut poser soucis pour l’exécution de waptdeploy car celui-ci a besoin du réseau au démarrage pour télécharger l’agent WAPT.

Vous pouvez activer la GPO : Toujours attendre le réseau au démarrage et à la connexion:

Computer ‣ Configuration ‣ Administrative Templates ‣ System ‣ Logon ‣ Always wait for the network at computer startup and logon

GPO to wait network startup

WAPTexit ne se lance pas

Malgré la présence du script dans les stratégies locales d’arrêt de la machine, waptexit.exe ne se lance pas à l’extinction du poste.

Résolution: Hybrid Shutdown

Il faut désactiver l’arrêt hybride de Windows10, qui cause par ailleurs beaucoup d’autres comportements étranges. La désactivation de l’arrêt hybride rétablit l’exécution des scripts à l’extinction de la machine.

L’arrêt hybride peut être désactivé en précisant une valeur dans le fichier wapt-get.ini de l’agent WAPT, voir paramètres waptexit.

Un paquet WAPT existe pour traiter le problème :

Résolution: Windows Home édition

Les GPO n’étant pas présentes sur les versions familiales de Windows, il est normal qu’elles ne s’exécutent pas.

La solution de contournement est d’utiliser une tâche planifiée qui appelle C:\Program Files (x86)\wapt\wapt-get.exe avec le paramètre upgrade.

Résolution: GPO locale corrompue

Il peut arriver que les stratégies de groupes locales de la machine soient corrompues.

Une des solutions consiste à supprimer les stratégies locales actuelles en supprimant le fichier C:\windows\system32\GroupPolicy\gpt.ini, puis en redémarrant la machine, et enfin en relançant l’installation de la tâche d’extinction :

wapt-get add-upgrade-shutdown

Si le problème se reproduit, cela signifie peut être qu’une autre application manipule également la GPO.

WAPTexit se coupe après 15 minutes et n’achève pas l’installation

Par défaut sous Windows, les scripts d’extinction ne peuvent s’exécuter plus de 15 minutes.

Si à l’arrêt de la machine, un script d’extinction n’a pas rendu la main au bout de 15 minutes, le script est interrompu.

Solution : augmenter le délai d’installation

Pour résoudre le soucis, il faut modifier la valeur preshutdowntimeout ainsi que la valeur max_gpo_script_wait.

Définissez ces valeurs dans C:\Program Files (x86)\wapt\wapt-get.ini pour modifier le comportement par défaut.

max_gpo_script_wait=180
pre_shutdown_timeout=180

Le paquet tis-wapt-conf-policy embarque cette configuration.

L’autre solution est d’utiliser la GPO File.ini.

GPO ini File

GPO ini File

Message d’erreur à l’ouverture de la console

Vérification de la version

Version d'erreur de la console WAPT

Version d’erreur de la console WAPT

La version de la console WAPT n’est pas égale à la version du serveur. Il est recommandé de la mettre à jour. Sélectionnez votre méthode préférée.

Connection refused

La console WAPT ne parvient pas à joindre le port 443 du serveur.

  • Check whether the Nginx web service is running on the WAPT Server.

    ps aux | grep nginx
    
  • If Nginx is not running, restart the Nginx service.

    service nginx restart
    
  • If Nginx still does not start, you’ll need to analyze journal logs in /var/log/nginx/ on Linux or in C:\Program Files (x86)\wapt\waptserver\nginx\logs on Windows.

Service Unavaible

Il est possible que le service waptserver soit stoppé.

  • Check whether waptserver is running.

    ps aux | grep wapt
    
  • If the command returns nothing, then start the waptserver.

    service waptserver start
    

Error connecting with SSL … verify failed

La console ne semble pas réussir à vérifier le certificat HTTPS du serveur.

Attention

Attention, avant toute chose vérifiez que vous n’êtes pas victime d’une attaque man in the middle !

Note

Si vous venez de refaire votre serveur WAPT et que vous utilisez un certificat auto-signé, vous pouvez récupérer les anciennes clés de votre ancien serveur wapt dans /opt/wapt/waptserver/apache/ssl.

  • Close your WAPT console.

  • Delete the folder %appdata%\..\Local\waptconsole.

  • Launch the command wapt-get enable-check-certificate.

  • Be sure that the previous command has gone well.

  • Restart the WAPT service with net stop waptservice && net start waptservice.

  • Restart the WAPT console.

Dans le cas ou vous ne pratiquez pas le certificate pinning, cela signifie que le certificat envoyé par le serveur ne pas être vérifié avec le bundle python certifi. Veillez à bien fournir la chaîne complète pour le certificat sur le serveur WAPT.

Problèmes pour enregistrer une machine avec le serveur WAPT

Si vous faites un wapt-get register et que la commande renvoie :

FATAL ERROR : ConnectionError: HTTPSConnectionPool(host='XXX.XXX.XXX.XXX', port=443): Max retries exceeded with url: /add_host

Vous devez vérifier que le port 443 est correctement transmis au serveur WAPT et qu’il n’est pas bloqué par un pare-feu.

Problème lors du enable-check-certificate

J’ai le message « certificate CN ### sent by server does not match URL host ### lors du enable-check-certificate »

Cela signifie que le CN envoyé par le certificat du serveur ne correspond pas au wapt_server du fichier wapt-get.ini.

Deux solutions :

  • Check the value of wapt_server in your wapt-get.ini.

    Si votre valeur est correcte, cela signifie sûrement qu’une erreur est survenue lors de la génération du certificat autosigné par le post conf, une faute de frappe …

    Vous pouvez donc regénérer vos certificats autosignés.

  • On the WAPT Server, delete the content of the /opt/wapt/waptserver/apache/ssl/ folder.

    Ensuite, relancez le script de postconf (le même que pendant l’installation initiale, avec les mêmes arguments et les mêmes valeurs).

    Enfin, vérifiez bien le nom renseigné lors de l’étape FQDN for the WAPT serveur est correcte.

  • You may now retry enable-check-certificate.

Problème avec la création de paquet

Création de paquet via la console

Le glisser-déposer dans le dépôt privé dans la console WAPT ne fonctionne pas :

  • The method will not work if the WAPT console has been started without Local Administrator privilege.

  • The method will not work if the WAPT console has been started with UAC.

    Solution de contournement simple : passer par Outils ‣ Créer un modèle de paquet depuis un installeur ‣ Choisir un installeur.

  • The WAPT console does not fill in automatically the informations in the fields:

    • There are special characters in some file path of the binary.

    • The installer does not provide the desired informations.

Problème de droit avec l’invite de commande Windows

Lors de l’édition d’un paquet, on obtient le message suivant :

OperationnalError: attempt to write a readlony database

OperationnalError: attempt to write a readlony database

Solution

Ouvrir une session en tant qu”Administrateur Local et refaire l’opération souhaitée.

Problème de droits avec PyScripter

Lorsqu’on souhaite tester l’installation d’un paquet sur son PC de développement de paquet à partir de PyScripter, on obtient le message :

OperationnalError: attempt to write a readlony database

OperationnalError: attempt to write a readlony database

Solution

Ouvrir une session en tant qu”Administrateur Local et refaire l’opération souhaitée.

Mon paquet WAPT est trop volumineux et je n’arrive pas à l’uploader

Quand un paquet est trop volumineux, il faut en général lancer le builder localement puis l’uploader avec WinSCP.

Solution

  • Build the package with PyScripter or manually build the package.

    Indication

    Si l”upload a précédemment échoué, vous pourrez trouver le paquet généré dans C:\waptdev.

  • Download and install WinSCP using WAPT.

    wapt-get install tis-winscp
    
  • Using WinSCP, upload your package in /var/www/html/wapt/ path of you Linux server.

  • Once the upload has finished, you’ll need to recreate the Packages index file on your repository.

    wapt-scanpackages /var/www/wapt/
    

Paquet WAPT en erreur

Problème d’installation

Symptôme

J’ai un paquet en erreur et le logiciel n’est pas installé sur la machine quand je me déplace.

Explication

Une erreur est survenue pendant l’exécution de l’installation définie dans setup.py.

Vous pouvez lire et analyser les messages d’erreur retournés dans la console et tenter de les comprendre.

L’installation sera retentée à chaque upgrade jusqu’à ce que le paquet ne génère plus d’erreur.

Solution
  • If WAPT returns an error code, research the error code on the Internet.

    Exemple with a MSI : 1618 : Une autre installation est déjà en cours. Un redémarrage devrait solutionner le problème.

    Note

    Les différents codes d’erreur MSI sont disponibles ici.

  • Go to the computer and try to install the package with the WAPT command line utility. Then check that the software has installed.

    Attention

    Une fois l’installation silencieuse lancée, ne pas intervenir.

    L’objectif est de reproduire le comportement de l’agent WAPT.

  • If the package installs silently in user context, this may mean that the software installer does not work in SYSTEM context.

  • If it is still not working, launch the installation manually. It is possible for an error to appear explicitly describing the problem (ex: missing dependency, etc).

  • It is possible that the installer does not support installing over an older version of the software, so you will have to explicitly remove older versions of the application before installing the new one.

Erreur « timed out after seconds with output “600.0” »

Symptôme

Certains paquets dans la console retournent l’erreur :

"Erreur timed out after seconds with output '600.0'"
Explication

Par défaut lors d’une installation (avec run, install_msi_if_needed ou install_exe_if_needed) WAPT va attendre 600 secondes que l’installeur lui rende la main.

si l’installeur n’a pas terminé dans ce délai, WAPT coupera l’installation en cours.

Solution

Si vous tentez d’installer un gros logiciel (Office, Solidworks, Libreoffice …), il est possible que l’intervalle de 600 secondes ne soit pas suffisant.

Vous devez alors, augmentez cette valeur avec l’argument timeout, ex: timeout = 1200 :

run('"setup.exe" /adminfile office2010noreboot.MSP',timeout=1200)

Erreur « has been installed but the uninstall key can not be found »

Symptôme

Certains paquets dans la console retournent l’erreur :

XXX has been installed but the uninstall key can not be found.
Explication

WAPT s’appuie sur Windows pour installer les binaires .msi avec install_msi_if_need et les binaires .exe avec install_exe_if_need.

Par défaut, WAPT accepte les codes de retour : 0 (OK) et 3010 (redémarrage nécessaire), et il vérifie la clé de désinstallation résultante (uninstall key).

Malheureusement, on ne peut pas toujours se fier à ces codes d’erreur, WAPT vérifie enfin que tout s’est bien déroulé :

  • It checks the presence of the uninstall key on the computer.

  • It checks that the version number of the software is equal or greater than the version number in the control file.

  • If this is not the case, it infers that the software may not be present on the computer.

La fonction bascule alors volontairement le paquet en erreur. L’installation sera retentée lors de chaque upgrade, jusqu’à ce que le paquet ne génère plus d’erreur.

Solution

Attention

Avant toute chose, il convient de se connecter sur la machine en erreur et de vérifier manuellement si le logiciel est correctement installé . Si ce n’est pas le cas, se référer à la documentation sur les problèmes d’installation d’un paquet..

  • If the software has installed correctly, this may mean that the uninstall key or the software version in the package is not correct.

  • Retrieve the correct uninstall key and make changes to the WAPT package accordingly.

  • If the error happens when using the install_msi_if_needed function, this means that the MSI installer is badly packaged and that it is returning an incorrect uninstall key.

Erreur « has been installed and the uninstall key found but version is not good »

Symptôme

Certains paquets dans la console retournent l’erreur :

has been installed and the *uninstall key* found but version is not good
Explication

Avec les commandes install_msi_if_needed et install_exe_if_needed, des vérifications supplémentaires sont effectuées pour vérifier que tout s’est bien passé.

Solution

Attention

Avant toute chose, il convient de se connecter sur la machine en erreur et de vérifier manuellement si le logiciel est correctement installé . Si ce n’est pas le cas, se référer à la documentation sur les problèmes d’installation d’un paquet..

Solution: Avec install_msi_if_needed

Les informations étant extraites depuis l’installeur MSI, cela signifie que le fichiers MSI ne renvoie pas la bonne version ou que la clé de désinstallation retournée n’est pas la bonne version.

Vérifier avec la commande :

wapt-get list-registry

Si la clé retournée n’est pas celle renseignée dans la partie installation du fichier setup.py , il n’est pas possible d’utiliser la fonction install_msi_if_needed.

Il faut rebasculer l’installation avec un simple run() et gérer les exceptions manuellement.

Avec install_exe_if_needed

Cela signifie probablement que la version renseignée dans la fonction install_exe_if_needed n’est pas la bonne. Corriger le paquet WAPT en conséquence.

Note

Si l’argument min_version n’a pas été renseigné, WAPT va tenter de récupérer automatiquement la version depuis l’installeur exe.

Pour vérifier la clé de désinstallation utilisée et le numéro de version, utiliser la commande :

wapt-get list-registry

Si aucune version n’est fournie avec la commande list-registry, cela signifie que la clé de désinstallation du logiciel ne fournit pas de version.

Deux solutions :

  • Use the argument get_version to provide the path to another uninstallkey.

def install():

   def versnaps2(key):
       return key['name'].replace('NAPS2 ','')

   install_exe_if_needed('naps2-5.3.3-setup.exe',silentflags='/VERYSILENT',key='NAPS2 (Not Another PDF Scanner 2)_is1',get_version=versnaps2)
  • Providing an empty value for min_version tells WAPT not to check for versions.

min_version=' '

Attention

Avec cette méthode on ne vérifiera plus la version lors de mise à jour !

Problèmes fréquents liés aux Antivirus

Certains Antivirus lèvent des alertes pour des composants de WAPT.

Parmis ceux-ci le composant nssm.exe est utilisé par WAPT comme utilitaire de service pour l’agent WAPT.

Voici une liste des exceptions possibles à déclarer dans votre interface de gestion centralisé antivirus :

"C:\Program Files (x86)\wapt\waptservice\win32\nssm.exe"
"C:\Program Files (x86)\wapt\waptservice\win64\nssm.exe"
"C:\Program Files (x86)\wapt\waptagent.exe"
"C:\Program Files (x86)\wapt\waptconsole.exe"
"C:\Program Files (x86)\wapt\waptexit.exe"
"C:\wapt\waptservice\win32\nssm.exe"
"C:\wapt\waptservice\win64\nssm.exe"
"C:\wapt\waptagent.exe"
"C:\wapt\waptconsole.exe"
"C:\wapt\waptexit.exe"
"C:\Windows\Temp\waptdeploy.exe"
"C:\Windows\Temp\waptagent.exe"
"C:\Windows\Temp\is-?????.tmp\waptagent.tmp"

EWaptBadControl: “utf8” codec can’t decode byte

Si vous recevez ce message, cela peut signifier que vous n’avez pas mis en place correctement votre environnement de développement. Visitez cette section de la documentation sur la configuration de l’UTF-8 (pas de BOM).

I have a lot more hosts in the console than I have host packages on my server?

Suite à une remarque de Philippe LEMAIRE du Lycée Français Alexandre Yersin à Hanoï, si vous utilisez la version Entreprise du WAPT et que vous faites un usage intensif des paquets unit ou profile packages, vous pouvez réaliser que vous aurez beaucoup plus d’hôtes dans votre console que de *host packages* sur votre serveur WAPT. C’est normal.

En fait, les paquets unit et les paquets profile ne sont pas explicitement attribués à la machine (c’est-à-dire comme des dépendances dans le paquet host) mais sont implicitement pris en compte par le moteur de dépendance de l’agent WAPT lors de la mise à niveau WAPT.

On peut donc ne pas avoir de paquet host sur le serveur si seuls des paquets unit sont utilisés pour gérer une flotte d’appareils.

Erreurs courantes

Utiliser un lecteur réseau pour stocker et livrer des paquets WAPT

Le mode de fonctionnement standard de WAPT est avec un serveur Web sécurisé qui fournit les paquets WAPT aux clients WAPT.

Tranquil IT déconseille l’utilisation d’un lecteur réseau pour la livraison de paquets WAPT pour plusieurs raisons :

  • A web server is extremely easy to setup, secure, maintain, backup and monitor.

  • To work correctly, a WAPT package needs to be self-contained. Indeed, we do not know if the network will be available at the time of the installation launch (for example if we have a waptexit that starts when the workstation is shutting down on a network with 802.1x user authentication, there will no longer be a network available at the time of installation). The self-contained nature of WAPT makes it more deterministic than other deployment solutions.

  • Network congestion may result from downloading large packages on large fleets of devices because you have less control over bandwidth rates or you may not be able to finish a partial download.

  • This method breaks or at least weakens the security framework of WAPT.

  • This method does not allow you to expose your repositories to Internet for your traveling personnel.

Attention

Même si WAPT peut fonctionner indépendamment du mode de transport, Tranquil IT ne supportera pas officiellement l’utilisation d’un lecteur réseau pour stocker et livrer des paquets WAPT.

Utiliser la fonction register() dans vos scripts d’audit

La fonction register() force l’envoi au serveur WAPT de l’inventaire matériel et logiciel de l’agent WAPT.

Cette fonction est très éprouvante pour les performances du serveur car elle oblige le serveur à analyser un JSON BLOB relativement grand et à injecter le résultat dans la base de données PostgreSQL.

La fonction est par défaut déclenchée manuellement ou lorsqu’une nouvelle mise à niveau de paquet est appliquée.

Lorsque vous utilisez la fonction register() dans un script d’audit, elle sera exécutée à chaque fois que le script d’audit est déclenché et chargera le serveur sans bénéfice apparent.

Par conséquent, nous ne recommandons pas l’utilisation de la fonction register() dans les scripts d’audit.