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
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 -ySur Centos 8 / Rhel 8, vous pouvez installer jq avec la commande suivante:
$ sudo dnf installer jq -yUne 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 / binCré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.jsonLe 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.
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 / autostartTapez les lignes de codes suivantes dans le AutoStart script shell.
#!/ bac / bashLe 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 / autostartDé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.serviceTapez les lignes suivantes dans le VMware-Autostart.service déposer.
[Unité]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:
$ idFaire 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.servicePour que les modifications SystemD prennent effet, exécutez la commande suivante:
$ sudo Systemctl Daemon-ReloadMaintenant, 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.serviceTester 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émarrerUne fois que votre ordinateur bottait, vous devriez voir que le service systemd VMware-Autostart.service est actif.
$ sudo systemctl status vmware-autostart.serviceDans 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 LISTEComme 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émarrerUne 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