Comment Autostart a VMware Workstation Pro Top 10 Virtual Machine sur Linux

Comment Autostart a VMware Workstation Pro Top 10 Virtual Machine sur Linux
Avant VMware Workstation Pro 16, vous pouvez automatiquement utiliser la fonction VM partagée pour démarrer les machines virtuelles à l'heure du démarrage. VMware Workstation Pro 16 déprécie le VM partagée fonctionnalité. Bien que vous puissiez toujours l'utiliser, il sera probablement abandonné dans la prochaine version de VMware Workstation Pro.

Dans cet article, je vais vous montrer comment écrire un VMware Autostart Programme à l'aide du langage de script Shell Bash et configurez SystemD pour démarrer VMware Workstation Pro 16 Virtual Machines sur le démarrage automatiquement. De cette façon, vous aurez toujours un plan de sauvegarde lorsque VMware Workstation Pro dépassera le VM partagée fonctionnalité pour de bon. Alors, commençons.

Table des matières

  1. Introduction au programme VMware Autostart
  2. Installation des dépendances requises
  3. Écriture du programme VMware Autostart
  4. Démarrage automatique du programme VMware Autostart sur le démarrage
  5. Tester le programme VMware Autostart
  6. Problèmes connus
  7. Référentiel GitHub
  8. Conclusion
  9. Les références

Introduction au programme VMware Autostart

Le but principal du VMware Autostart programme:

1) Lisez un fichier de configuration composé de toutes les machines virtuelles VMware Workstation Pro 16 que vous souhaitez démarrer automatiquement au démarrage.

2) Démarrer automatiquement les machines virtuelles configurées au moment du démarrage et les suspendre avant l'arrêt du système ou le redémarrage.

Pour accomplir cela, j'ai créé,

1) un fichier de configuration de la machine virtuelle centrale configurer.json.

2) un script de shell bash AutoStart. Il lira le fichier de configuration configurer.json pour déterminer les machines virtuelles à gérer. Il démarrera ou suspendre les machines virtuelles configurées en fonction de l'argument de ligne de commande fournis au script shell à l'exécution.

3) un fichier unitaire Systemd VMware-Autostart.service. Il exécutera automatiquement le script bash AutoStart Pour démarrer toutes les machines virtuelles configurées au démarrage. Il exécutera également le script bash AutoStart Pour suspendre les machines virtuelles configurées avant que le système ne s'arrête ou ne redémarre.

Installation des dépendances requises

J'ai utilisé un fichier JSON configurer.json pour stocker la configuration VM VM que le VMware Autostart Le programme utilisera pour déterminer les machines virtuelles sur Autostart sur Boot.

Pour analyser le fichier de configuration JSON à partir du script Shell Bash du programme VMware Autostart, j'ai utilisé le jq commande.

Sur Ubuntu, Debian, Linux Mint, KDE Neon et autres distributions Linux basées à Debian; vous pouvez installer jq avec la commande suivante:

$ sudo apt install jq -y

Sur Centos 8 / Rhel 8, vous pouvez installer jq avec la commande suivante:

$ sudo dnf installer jq -y

Une fois jq est installé, exécutez la commande suivante pour voir si jq est accessible à partir du terminal.

$ jq --version

Écriture du programme VMware Autostart

Cette section vous montrera comment écrire le VMware Autostart programmez et expliquez comment cela fonctionne.

Tout d'abord, créez un nouveau répertoire de projet / opt / vmware-autostart et créer un poubelle/ sous-répertoire dans le répertoire du projet comme suit:

$ sudo mkdir -pv / opt / vmware-autostart / bin

Créer un nouveau configurer.json dossier dans le répertoire du projet / opt / vmware-autostart avec la commande suivante:

$ sudo nano / opt / vmware-autostart / config.json

Le configurer.json Le fichier conserve une liste des machines virtuelles VMware Workstation Pro 16 que vous souhaitez démarrer automatiquement sur le démarrage.

Une entrée VMWare Workstation Pro 16 VM n'a que 3 propriétés.

  • nom - Le nom de la machine virtuelle
  • vmxpath - Le chemin absolu vers le .vmx fichier de la machine virtuelle
  • AutoStart - Un booléen. Si vrai, La machine virtuelle sera automatiquement démarrée au démarrage. Si FAUX, la machine virtuelle ne sera pas gérée par le VMware Autostart programme. Donc, il ne démarrera pas automatiquement à l'heure du démarrage.

Vous pouvez trouver le Nom de la machine virtuelle et VMXPATH de l'application VMware Workstation Pro 16 comme marqué dans la capture d'écran ci-dessous.

Maintenant que vous connaissez le format de fichier de configuration, écrivons le VMware Programme AutoStart Utilisation du langage de script Shell Bash.

Créer un nouveau script bash AutoStart dans le / opt / vmware-autostart / bin Répertoire avec la commande suivante:

$ sudo nano / opt / vmware-autostart / bin / autostart

Tapez les lignes de codes suivantes dans le AutoStart script shell.

#!/ bac / bash
msg_auto_answer_disable ()
écho "désactiver le msg.Autoanswer pour $ vm_name "
sed -i.bak -s '/ ^ msg \.Autoanswer / D '"$ vmx_path"

msg_auto_answer_enable ()
Echo "Activer MSG.Autoanswer pour $ vm_name "
écho 'msg.autoanswer = "true" '>> "$ vmx_path"

start_vm ()
Echo "$ vm_name commence…"
/ usr / bin / vmrun -t ws start "$ vmx_path" nogui 2> / dev / null && echo "$ vm_name démarré."|| echo" $ vm_name n'a pas réussi à commencer."

suspend_vm ()
Echo "$ vm_name est en suspension…"
/ usr / bin / vmrun -t ws suspendre "$ vmx_path" dur 2> / dev / null && echo "$ vm_name suspendu."|| echo" $ vm_name n'a pas réussi à suspendre."

config_file = / opt / vmware-autostart / config.json
num_vms = $ (jq '.VMS | longueur' < $config_file)
action = "1 $"
pour ((compteur = 0; compteur < $num_vms; counter++))
faire
vm_name = $ (jq -j ".VMS [$ compteur].nom" < $config_file)
vmx_path = $ (jq -j ".VMS [$ compteur].vmxpath " < $config_file)
vm_autostart = $ (jq -j ".VMS [$ compteur].Autostart " < $config_file)
Si ["$ action" == "start" -a "$ vm_autostart" == "true"]
alors
msg_auto_answer_disable && msg_auto_answer_enable && start_vm
Fi
Si ["$ action" == "suspendre" -a "$ vm_autostart" == "true"]
alors
msg_auto_answer_disable && suspendre_vm
Fi
fait
sortie 0

Le AutoStart Le script bash devrait ressembler à ce qui suit.

Une fois que vous avez terminé, appuyez sur + X suivie par Y et Pour sauver le AutoStart Script bash.

Ici,

Le msg_auto_answer_disable et msg_auto_answer_enable Les fonctions sont utilisées pour supprimer et définir le msg.réponse automatique option dans le .vmx dossier de la machine virtuelle, respectivement.

Quand msg.réponse automatique est réglé sur VRAI, VMware Workstation Pro 16 Virtual Machines n'attendra aucune entrée utilisateur. Si ce n'est pas défini, vous ne pourrez pas démarrer des machines virtuelles en arrière-plan à l'aide du AutoStart script s'il nécessite une interaction utilisateur pour démarrer.

Le start_vm La fonction est utilisée pour démarrer une machine virtuelle en utilisant le .vmx fichier de la machine virtuelle. Il imprime également les messages de journal nécessaires à l'écran.

Le suspension_vm La fonction est utilisée pour suspendre une machine virtuelle en utilisant le .vmx fichier de la machine virtuelle. Il imprime également les messages de journal nécessaires à l'écran.

Certaines variables sont définies dans les lignes 23-25.

config_file - Le chemin absolu vers la configuration.fichier json.

num_vms - Les usages jq Pour calculer le nombre de machines virtuelles disponibles dans le configurer.json déposer.

action - Le premier argument de ligne de commande est l'action pour effectuer. Le AutoStart Le script l'utilise pour déterminer s'il faut démarrer des machines virtuelles ou suspendre les machines virtuelles.

Les lignes 27-42 sont utilisées pour traverser toutes les machines virtuelles disponibles dans le configurer.json fichier, activer / désactiver msg.réponse automatique propriété pour chaque machine virtuelle et démarrer / suspendre les machines virtuelles.

Dans la boucle, les lignes 29-31 définissent certaines variables.

VM_NAME - Les usages jq pour obtenir le nom propriété de la machine virtuelle du configurer.json déposer.

vmx_path - Les usages jq pour obtenir le vmxpath propriété de la machine virtuelle du configurer.json déposer.

VM_AUTOSTART - Les usages jq pour obtenir le AutoStart propriété de la machine virtuelle du configurer.json déposer.

Si la valeur d'action est démarrée et VM_Autostart (la propriété Autostart dans Config.JSON) est vrai, supprimez le msg.réponse automatique propriété du .vmx fichier (si existe) de la machine virtuelle, définissez msg.réponse automatique propriété VRAI dans le .vmx fichier de la machine virtuelle et démarrez la machine virtuelle.

Si la valeur d'action est suspendue et VM_Autostart (la propriété Autostart dans Config.JSON) est vrai, supprimez le msg.propriété automatique .Fichier VMX suspendre la machine virtuelle.

Une fois que vous avez créé le AutoStart Script bash, faites-le exécutable avec la commande suivante:

$ sudo chmod + x / opt / vmware-autostart / bin / autostart

Démarrage automatique du programme VMware Autostart sur le démarrage

Dans cette section, je vais créer un service système afin qu'il exécute le AutoStart Bash Script automatiquement au démarrage.

Créer un nouveau fichier VMware-Autostart.service Dans le répertoire du projet / opt / vmware-autostart comme suit:

$ sudo nano / opt / vmware-autostart / vmware-autostart.service

Tapez les lignes suivantes dans le VMware-Autostart.service déposer.

[Unité]
Description = Démarrer automatiquement la machine virtuelle VMware
After = réseau.cible VMware.service
Requiert = réseau.cible VMware.service
Conflits = arrêt.cible
Avant = arrêt.cible multi-utilisateurs.cible
[Service]
Type = OneShot
Execstart = / opt / vmware-autostart / bin / autostart start
Execstop = / opt / vmware-autostart / bin / autostart suspension
Redémarrer = non
ResteafterExit = oui
Utilisateur = shovon
Groupe = shovon
[Installer]
Recherché = multi-utilisateurs.cible

Une fois que vous avez terminé, appuyez sur + X suivie par Y et Pour sauver le VMware-Autostart.service déposer.

Ici,

Exercice exécute le AutoStart script avec un commencer Option de ligne de commande au moment du démarrage. Ainsi, toutes les machines virtuelles disponibles dans le configurer.json Le fichier sera démarré automatiquement sur le démarrage du système.

Execstop fait le contraire. Il exécute le AutoStart script avec le suspendre Option de ligne de commande avant d'arrêter ou de redémarrer l'ordinateur. Ainsi, toutes les machines virtuelles disponibles dans le configurer.json Le fichier sera suspendu sur l'arrêt du système ou le redémarrage.

Le AutoStart Le script sera exécuté en tant qu'utilisateur bousculade et grouper bousculade. Vous devez le remplacer par votre connexion Utilisateur et primaire Groupe nom.

Vous pouvez trouver votre connexion Utilisateur et primaire Groupe Nom avec la commande suivante:

$ id

Faire un lien symbolique du VMware-Autostart.service fichier dans le / etc / systemd / système Répertoire comme suit:

$ sudo ln -s / opt / vmware-autostart / vmware-autostart.Service / etc / Systemd / System / VMware-Autostart.service

Pour que les modifications SystemD prennent effet, exécutez la commande suivante:

$ sudo Systemctl Daemon-Reload

Maintenant, ajoutez le service systemd VMware-Autostart.service au démarrage du système pour démarrer automatiquement à l'heure du démarrage.

$ sudo systemctl activer vmware-autostart.service

Tester le programme VMware Autostart

Pour vérifier si le programme fonctionne comme prévu, vous devez redémarrer votre ordinateur. Avant de le faire, assurez-vous d'ajouter les machines virtuelles que vous souhaitez démarrer automatiquement sur le démarrage dans le / opt / vmware-autostart / config.json déposer.

J'ajouterai l'ubuntu-desktop-1 et travaillerai et travaillerai des machines virtuelles PC 1 dans le / opt / vmware-autostart / config.Fichier JSON pour la démonstration.

Une fois que vous avez terminé, redémarrez votre ordinateur avec la commande suivante:

$ sudo redémarrer

Une fois que votre ordinateur bottait, vous devriez voir que le service systemd VMware-Autostart.service est actif.

$ sudo systemctl status vmware-autostart.service

Dans les journaux SystemD, vous pouvez voir que les machines virtuelles Ubuntu-desktop-1 et Travail PC 1 commencé automatiquement très bien.

Pour confirmer que les machines virtuelles VMware Workstation Pro 16 ont automatiquement commencé sur le démarrage, exécutez la commande suivante:

$ VMRUN LISTE

Comme vous pouvez le voir, les machines virtuelles VMware Workstation Pro 16 fonctionnent très bien.

Vous pouvez également vérifier que les machines virtuelles fonctionnent à partir de l'application VMware Workstation Pro 16, comme vous pouvez le voir dans la capture d'écran ci-dessous.

Pour tester si les machines virtuelles seront suspendues lorsque vous fermez ou redémarrez votre ordinateur, ouvrez l'une des machines virtuelles que vous avez configurées pour Autostart et démarrez n'importe quelle application.

Fermez l'application VMware Workstation Pro 16 pendant que la machine virtuelle s'exécute.

Cliquer sur De fonctionner en arrière-plan comme marqué dans la capture d'écran ci-dessous.

Maintenant, redémarrez votre ordinateur avec la commande suivante:

$ sudo redémarrer

Une fois que votre ordinateur bottait, ouvrez l'application VMware Workstation Pro 16, et vous devriez voir que la machine virtuelle est dans le même état que la dernière fois (récupéré de l'état suspendu).

Problèmes connus

Gardez une machine virtuelle ouverte dans l'application VMware Workstation Pro 16. Le VMware Autostart Le programme ne pourra pas suspendre la machine virtuelle lorsque vous fermez ou redémarrez votre ordinateur tout en gardant l'application VMware Workstation Pro 16. Il peut être rare que les gens ferment ou redémarrer leur ordinateur tout en gardant les programmes ouverts. Mais le programme pourrait être amélioré pour s'assurer que l'application VMware Workstation Pro 16 est fermée avant de suspendre les machines virtuelles.

Référentiel GitHub

Le programme VMware Autostart illustré dans cet article est également disponible sur GitHub. Vous pouvez cloner le référentiel GitHub (Shovon8 / VMware-Autostart) de ce programme pour vous sauver de la frappe.

Lien github: https: // github.com / shovon8 / vmware-autostart

Conclusion

Cet article vous montre comment rédiger un VMware Autostart Programme pour démarrer automatiquement les machines virtuelles VMware Workstation Pro 16 sur le démarrage et les suspendre avant l'arrêt du système ou redémarre.

Les références

[1] VMware - Application de ligne de commande

[2] en utilisant VMRUN pour contrôler les machines virtuelles

[3] Comptez les éléments du tableau JSON avec JQ - PHPFOG.com

[4] Comment supprimer les citations des résultats? · Numéro # 1735 · Stedolan / JQ · GitHub