Installation des VMware Tools sur Debian 4

J’ai dû installer aujourd’hui des VMware Tools sur une machine Debian Etch.

La documentation VMware est plutôt complète et ne voulant pas utiliser le paquet open-vm-tools, j’ai quand même décidé d’en faire un article même si l’installation est plutôt aisée pour qui est adepte de GNU/Linux, ce qui n’est pas tellement mon cas dans un contexte professionnel.

A noter qu’il peut être nécessaire de procéder à un snapshot de la machine virtuelle si une installation des paquets additionnels gcc, make, binutils ainsi que les sources du kernel est souhaitée pour utiliser toutes les fonctionnalités des outils ; dans ce cas précis, j’ai installé ces paquets en pré-requis.

apt-get update
apt-get install make gcc binutils

Ensuite, il faut récupérer la source du kernel propre à la version de Debian exécutée. On la récupère grâce à uname -r. Par exemple, pour une Debian 4.0, on est sur une version de kernel 2.6.18. Pour se faciliter la tâche, on utilisera le retour de l’instruction comme nom de paquet.

apt-get install linux-image-$(uname -r)

Tout d’abord, monter le disque virtuel des vmtools sur l’enveloppe de machine virtuelle via l’interface VMware, puis la monter dans l’OS. En fonction de la configuration, cela pourra être /dev/cdrom ou /dev/cdrom1 ; dans cet exemple j’utiliserai /dev/cdrom1. On monte donc dans le répertoire /media/cdrom, en s’assurant qu’il existe avant d’envoyer l’instruction :

mount /dev/cdrom1 /media/cdrom

On créé ensuite un répertoire à l’emplacement de son choix pour copier les sources en local et pouvoir extraire l’archive. Dans mon cas, n’ayant qu’un utilisateur root, je l’ai créé dans /root/vmtools.

mkdir /root/vmtools
cd /media/cdrom

En faisant un ls -l, on peut constater que le disque a bien été monté et que divers fichiers remontent :

Ensuite, on copie ces fichiers vers le répertoire fraîchement créé :

cp * /root/vmtools

Puis on procède à l’extraction de l’archive :

cd /root/vmtools/
tar xzf VMwareTools-<version>.tar.gz

Cette extraction va nous donner un dossier vmware-tools-distrib dans lequel on exécutera vmware-install.pl. Il ne reste ensuite plus qu’à suivre l’assistant d’installation, les valeurs par défaut couvrant une grosse majorité des besoins. En fonction des paquets installés sur la machine, l’assistant se plaindra de l’absence de certains d’entre eux (comme gcc, binutils et make ainsi que le linux-image que j’ai évoqué plus haut) qui pourront bloquer certaines fonctionnalités si ils ne sont pas installés.

Harmonisation de la synchronisation du temps sur Debian et Windows

Aujourd’hui j’ai pris un peu le temps de mettre à plat ma configuration concernant les horloges et la synchronisation de celles-ci sur les différents serveurs que je fais fonctionner sur mon environnement personnel. Les horloges étant disparates sur les systèmes, j’ai donc défini la configuration suivante :

  • L’hyperviseur ESXi se synchronisant sur des serveurs NTP publics : http://www.pool.ntp.org/ ;
  • Mes deux contrôleurs de domaine Windows se synchronisant sur ces mêmes serveurs NTP ;
  • Toutes mes autres machines se synchronisant sur mes contrôleurs de domaine.

Sur Windows, j’ai développé un script Powershell – qu’il m’aurait été possible d’appliquer via GPO – qui s’occupe de modifier la configuration dans la base de registre afin que le serveur utilise comme source les contrôleurs de domaine. Ce script (disponible sur mon miroir de téléchargement) nécessite évidemment des droits d’administration sur le serveur pour être exécuté – on s’assurera de remplacer time-srvX par le nom du serveur de temps, en conservant bien ,0x1 et en séparant les noms de serveurs par un espace :

Set-ItemProperty -Path HKLM:\System\CurrentControlSet\Services\w32time\Config -name « AnnounceFlags » -value « 5 »
Set-ItemProperty -Path HKLM:\System\CurrentControlSet\Services\w32time\Parameters -name « Type » -value « NTP »
Set-ItemProperty -Path HKLM:\System\CurrentControlSet\Services\w32time\TimeProviders\NtpServer -name « Enabled » -value « 1 »
Set-ItemProperty -Path HKLM:\System\CurrentControlSet\Services\w32time\Parameters -name « NtpServer » -value « time-srv1,0x1 time-srv2,0x1 »

A noter qu’en fonction de la politique d’exécution des scripts sur la machine, il est possible que le script ne s’exécute pas, on va donc l’autoriser si cette politique n’est pas gérée au niveau du domaine.

Set-ExecutionPolicy Unrestricted

Une fois ces instructions interprétées par Powershell, on redémarre le service de temps :

net stop w32time
net start w32time

Puis, on peut s’assurer que la source est correcte et faire une synchronisation grâce aux commandes suivantes – l’interrogation de la source devrait renvoyer l’un des serveurs spécifiés plus haut :

w32tm /query /source
w32tm /resync

Ensuite, sur mes machines Debian, grâce au paquet ntpdate, il est possible de spécifier au système l’adresse d’un serveur sur lequel synchroniser l’horloge.

apt-get install ntpdate

On modifie le fichier de configuration :

nano /etc/default/ntpdate

Afin de forcer ntpdate a bien utiliser ce fichier de configuration, on passe le paramètre NTPDATE_USE_NTP_CONF à no, puis on modifie NTPSERVERS pour y intégrer les serveurs de temps, ce qui donne ceci :

NTPDATE_USE_NTP_CONF=no
NTPSERVERS= »time-srv1 time-srv2″

Et enfin, pour synchroniser la machine avec les serveurs tout juste renseignés :

ntpdate-debian

Montage d’un NAS sur une machine virtuelle Debian distante

J’ai franchi le pas récemment en achetant un NAS pour sauvegarder à la maison mes documents personnels et du contenu multimédia en tout genre. En plus d’utiliser Google Drive avec Plex (voir cet article), j’ai décidé de monter un troisième serveur Plex sous Debian Stretch pour y décoder le multimédia qui provient de mon NAS directement. Afin que le NAS à la maison soit accessible sur mon Plex qui est une machine virtuelle située en dehors de mon réseau local, je vais utiliser Samba – intégré à mon NAS – et faire un peu de routage sur ma Livebox.

Tout d’abord, satisfaire les prérequis en termes de paquets sur la machine :

adduser <sambaplex>
apt-get install cifs-utils

Je me servirai du dossier home de l’utilisateur sambaplex pour y monter mon NAS afin de le séparer du répertoire de l’utilisateur courant. Etant donné que sur le serveur nous n’allons pas héberger un partage mais seulement en monter un, il n’y a pas besoin d’installer tous les paquets de samba.

Ensuite, il faut paramétrer la box qui fait office de routeur à la maison. Dans mon cas, ayant une IP dynamique, j’ai dû faire appel à un service externe nommé No-IP qui permet de souscrire gratuitement (avec une offre payante) à un nom de domaine que je prolongerai tous les mois ; ce service est géré par ma box grâce à l’API, ce qui signifie que dès que mon IP change, l’adresse que renvoie mon nom de domaine change aussi. Cela évite d’avoir à remonter le partage sur le serveur dès que l’IP change et de pouvoir communiquer avec un nom, ce qui est plus pratique.

Je configure ici mon service de DNS dynamique ; sur la Livebox plusieurs prestataires sont disponibles

Ensuite, il est nécessaire de procéder à l’ouverture des ports dans le pare-feu, et également de NATer ceux-ci afin que le trafic puisse rentrer et sortir proprement. 5 ports sont nécessaires pour que toutes les fonctionnalités soient accessibles :

Je route les ports 135, 137 et 445 en TCP/UDP, 138 en UDP et 139 en TCP vers le NAS

Par précaution, j’ai également procédé à la création d’un bail DHCP permanent pour le NAS afin qu’il ne change pas d’adresse IP locale en cas de redémarrage ou de perte de connexion. Une fois que tout est prêt côté « maison », il ne reste plus qu’à monter le partage samba du NAS sur le serveur distant grâce à cette commande exécutée en root :

mount -t cifs //<nas.domain>/<share> /home/sambaplex -o username=<nasuser>

Il sera alors demandé le mot de passe du compte nasuser qui devra avoir les droits en lecture sur le share que l’on souhaite monter.

Si l’on souhaite démonter le share, rien de plus simple :

umount /home/sambaplex

Désormais je peux ajouter mon contenu sur ce serveur Plex comme si il était localement sur la machine virtuelle, chaque appel aux fichiers passant par Samba – et nécessitant de ce fait, une bonne bande passante étant donné que tout transite du NAS à la maison vers la machine virtuelle.

Mise en place de PlexPy, un outil de supervision de Plex Media Server

PlexPy est un outil de supervision et de monitoring pour un serveur Plex. Suite à un crash de mon serveur Plex aujourd’hui – qui deviennent de plus en plus fréquents (un par semaine…) sans que je comprenne trop pourquoi – je voulais trouver un moyen d’être averti par courriel lorsque le serveur ne répond plus correctement ou lorsque le streaming est impossible. PlexPy fonctionne comme son nom l’indique avec Python et offre une interface Web. Bien qu’il soit plutôt facile à installer, je vais en détailler le processus d’installation et de configuration sur une machine Debian. A noter qu’il n’est pas nécessaire d’installer PlexPy sur le serveur Plex en question.

Tout d’abord, on créé un utilisateur qui exécutera l’application :

adduser plexpy

Je pars du principe que Python et Git sont installés sur la machine.

cd /opt/
git clone https://github.com/JonnyWong16/plexpy.git
cd plexpy
python PlexPy.py

L’idée étant que PlexPy démarre tel un service au lancement du système afin d’éviter d’avoir à laisser la console ouverte ou à passer par screen, il va falloir quelques manipulations supplémentaires ; copier-coller le contenu du fichier .service présent sur le GitHub (ou bien récupérer la version déjà renommée sur mon Google Drive) puis l’enregistrer dans /lib/systemd/system (en le renommant plexpy.service si vous avez copié/collé). Ensuite, faire en sorte que ce service démarre avec le système :

systemctl daemon-reload
systemctl enable plexpy.service

Il démarre ensuite grâce à l’instruction systemctl start plexpy.service. Il ne faudra pas oublier de s’assurer que l’utilisateur plexpy qui a été créé plus tôt soit propriétaire du répertoire de l’application :

chown -R /opt/plexpy

Le fichier .service peut se modifier si jamais l’application n’a pas été installée dans le répertoire par défaut. Pour ma part, étant le seul administrateur de la machine Plex et le seul à y avoir un accès distant, j’ai laissé le fichier de configuration dans son emplacement par défaut.

Une fois l’application exécutée, un navigateur va s’ouvrir sur http://localhost:8181. Etant connecté en SSH, c’est w3m qui s’est ouvert.

Pour plus de facilité, j’ai contrôlé la pré-configuration de l’application via un navigateur installé sur une autre machine du réseau.

L’assistant divisé en plusieurs écrans est plutôt clair et permet de faire une configuration basique de l’outil. Par la suite, j’irai dans la configuration avancée pour modifier les notifications.

Une fois que tout est défini, on arrive sur la page d’accueil, qui présente diverses statistiques et informations par rapport au serveur Plex qui est écouté. Si l’on souhaite monitorer plusieurs serveurs Plex, alors il faut installer PlexPy autant de fois que nécessaire, sachant qu’il est possible de changer le port de l’interface web pour avoir plusieurs instances sur la même machine sans que cela ne pose problème.

Pour configurer ce qui m’intéresse, c’est-à-dire une alerte par courriel qui m’avertit d’un éventuel dysfonctionnement de Plex, il faut aller fouiner dans la configuration avancée, qui mérite de toutes façons le détour car c’est ici qu’on configure le degré d’alerte, le moyen de contact (il est possible de recevoir des notifications par une multitude de biais autre que le courriel, notamment Twitter ou autre outils de communication comme Telegraph…) et qu’on gère toute la partie technique (base de données, taille des logs, etc.).

Le design étant proche de celui de Plex, y retrouver ses petits est aisé. Tout d’abord, je vérifie que ma configuration est bien la bonne.

La section « Notifications » permet de paramétrer ce qui sera envoyé : titre, contenu, etc. Ce qui m’intéresse le plus cependant et là où je vais pouvoir mettre en place ce que je souhaite est dans la section « Notifications Agents ». Je choisis la ligne « E-mail » afin de la paramétrer. Il m’est donc naturellement demandé un serveur SMTP entre autres adresses émettrices et réceptrices.

Puis, une fois la configuration effectuée, un clic sur la cloche pour l’activer ; tout un panel de cases à cocher s’affiche, permettant de choisir exactement le moment où l’on souhaite être averti. J’ai donc choisi d’être averti par courriel lorsque le serveur est inaccessible et lorsqu’il revient en ligne.