So autostart eine VMware Workstation Pro Top 10 Virtual Machine unter Linux

So autostart eine VMware Workstation Pro Top 10 Virtual Machine unter Linux
Vor der VMware Workstation Pro 16 können Sie die gemeinsam genutzte VM -Funktion automatisch verwenden, um virtuelle Maschinen zur Startzeit zu starten. VMware Workstation Pro 16 verwertet die Gemeinsame VM Besonderheit. Obwohl Sie es immer noch verwenden können, wird es wahrscheinlich in der nächsten Version von VMware Workstation Pro fallen gelassen.

In diesem Artikel werde ich Ihnen zeigen, wie man ein schreibt VMware Autostart Programm mithilfe der Bash -Shell -Skriptsprache und konfigurieren Sie systemd, um die virtuellen Maschinen von VMware Workstation Pro 16 automatisch auf dem BOOT zu starten. Auf diese Weise haben Sie immer noch einen Backup -Plan, wenn VMware Workstation Pro das abfällt Gemeinsame VM Feature for Good. Also lasst uns anfangen.

Inhaltsverzeichnis

  1. Einführung in das VMware Autostart -Programm
  2. Installation der erforderlichen Abhängigkeiten
  3. Schreiben des VMware Autostart -Programms
  4. Starten Sie das VMware -Autostart -Programm automatisch im Boot
  5. Testen des VMware Autostart -Programms
  6. Bekannte Probleme
  7. Github -Repository
  8. Abschluss
  9. Verweise

Einführung in das VMware Autostart -Programm

Der Hauptzweck der VMware Autostart Programm:

1) Lesen Sie eine Konfigurationsdatei, die aus allen VMware WorkStation Pro 16 VMs besteht, die Sie automatisch zur Bootzeit beginnen möchten.

2) Starten Sie die konfigurierten VMs automatisch zum Startzeit und suspendieren Sie sie vor dem Herunterfahren oder Neustart des Systems.

Um dies zu erreichen, habe ich geschaffen,

1) Eine zentrale VM -Konfigurationsdatei Konfiguration.JSON.

2) Ein Bash -Shell -Skript Auto-Start. Es wird die Konfigurationsdatei gelesen Konfiguration.JSON Um die VMs zu bestimmen, um verwaltet zu werden. Es startet oder wird die konfigurierten VMs abhängig vom Befehlszeilenargument, das dem Shell-Skript zur Laufzeit bereitgestellt wurde.

3) eine Systemd -Einheitsdatei VMware-Autostart.Service. Es wird das Bash -Skript automatisch ausgeführt Auto-Start So starten Sie alle konfigurierten VMs zur Startzeit. Es wird auch das Bash -Skript ausführen Auto-Start So suspendieren die konfigurierten VMs vor dem Abschalten oder Neustart des Systems.

Installation der erforderlichen Abhängigkeiten

Ich habe eine JSON -Datei verwendet Konfiguration.JSON zum Speichern der VMware VM -Konfiguration, die die VMware Autostart Das Programm ermittelt die virtuellen Maschinen, um den Start zu automatisieren.

Um die JSON -Konfigurationsdatei aus dem Bash -Shell -Skript des VMware AutoStart -Programms zu analysieren, habe ich die verwendet JQ Befehl.

Über Ubuntu, Debian, Linux Mint, KDE Neon und andere Debian -basierte Linux -Verteilungen; Sie können installieren JQ mit dem folgenden Befehl:

$ sudo APT installieren Sie JQ -y

Bei CentOS 8/RHEL 8 können Sie installieren JQ mit dem folgenden Befehl:

$ sudo dnf install jq -y

Einmal JQ Führen Sie den folgenden Befehl aus, um festzustellen, ob JQ ist vom Terminal aus zugänglich.

$ JQ --VERSION

Schreiben des VMware Autostart -Programms

In diesem Abschnitt wird Ihnen angezeigt, wie Sie das schreiben können VMware Autostart Programm und erklären, wie es funktioniert.

Erstellen Sie zunächst ein neues Projektverzeichnis /opt/vmware-autostart und erstellen a Behälter/ Unterverzeichnis im Projektverzeichnis wie folgt:

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

Erstelle eine neue Konfiguration.JSON Datei im Projektverzeichnis /opt/vmware-autostart mit dem folgenden Befehl:

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

Der Konfiguration.JSON Die Datei führt eine Liste von VMware Workstation Pro 16 VMs, die Sie automatisch mit dem BOOT beginnen möchten.

Ein VMware Workstation Pro 16 VM -Eintrag hat nur 3 Eigenschaften.

  • Name - Der Name der virtuellen Maschine
  • VMXPath - Der absolute Weg zum .VMX Datei der virtuellen Maschine
  • Auto-Start - Ein Boolescher. Wenn WAHR, Die VM wird automatisch zur Startzeit gestartet. Wenn FALSCH, Die VM wird nicht von der verwaltet VMware Autostart Programm. Es wird also nicht automatisch zur Startzeit beginnen.

Sie können das finden Name und VMXPath der virtuellen Maschine Aus der VMware Workstation Pro 16 App, wie im Screenshot unten markiert.

Nachdem Sie das Konfigurationsdateiformat kennen, schreiben wir die VMware Autostart -Programm Verwenden der Bash -Shell -Skriptsprache.

Erstellen Sie ein neues Bash -Skript Auto-Start im /opt/vmware-autostart/bin Verzeichnis mit dem folgenden Befehl:

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

Geben Sie die folgenden Codes -Zeilen in der ein Auto-Start Shell-Skript.

#!/Bin/Bash
msg_auto_answer_disable ()
Echo "Deaktivieren Sie die MSG deaktivieren.Autoanswer für $ vm_name "
sed -i.Bak -S '/^msg \.Autoanswer/d '"$ vmx_path"

msg_auto_answer_enable ()
Echo "MSG ermöglichen.Autoanswer für $ vm_name "
Echo 'msg.autoanswer = "true" '>> "$ vmx_path"

start_vm ()
echo "$ vm_name fängt an ..."
/usr/bin/vmrun -t ws start "$ vmx_path" nogui 2>/dev/null && echo "$ vm_name gestartet."|| echo" $ vm_name konnte nicht starten."

suspend_vm ()
echo "$ vm_name wird suspendiert ..."
/usr/bin/vmrun -t ws suspend "$ vmx_path" hart 2>/dev/null && echo "$ vm_name suspendiert."|| echo" $ vm_name konnte nicht suspendiert werden."

config_file =/opt/vmware-autostart/config.JSON
num_vms = $ (jq '.VMs | Länge' < $config_file)
action = "$ 1"
für ((Zähler = 0; Zähler < $num_vms; counter++))
Tun
vm_name = $ (jq -j ".VMS [$ counter].Name" < $config_file)
vmx_path = $ (jq -j ".VMS [$ counter].VMXPath " < $config_file)
vm_autostart = $ (jq -j ".VMS [$ counter].Auto-Start" < $config_file)
if ["$ action" == "start" -a "$ vm_autostart" == "true"]
Dann
msg_auto_answer_disable && msg_auto_answer_enable && start_vm
fi
Wenn ["$ action" == "suspend" -A "$ vm_autostart" == "true"]
Dann
msg_auto_answer_disable && suspend_vm
fi
Erledigt
beenden 0

Der Auto-Start Das Bash -Skript sollte wie folgt aussehen.

Sobald Sie fertig sind, drücken Sie + X gefolgt von Y Und um die zu retten Auto-Start Bash -Skript.

Hier,

Der msg_auto_answer_disable Und msg_auto_answer_enable Funktionen werden verwendet, um das zu entfernen und festzulegen Nachricht.automatische Antwort Option in der .VMX Datei der VM.

Wenn Nachricht.automatische Antwort ist eingestellt auf WAHR, VMware Workstation Pro 16 Warten auf Benutzereingaben nicht auf Benutzereingaben. Wenn dies nicht festgelegt ist, können Sie nicht in der Lage sein, virtuelle Maschinen im Hintergrund zu starten Auto-Start Skript, wenn eine Benutzerinteraktion erforderlich ist, um zu starten.

Der start_vm Funktion wird verwendet, um eine virtuelle Maschine mit dem zu starten .VMX Datei der virtuellen Maschine. Es druckt auch die erforderlichen Protokollnachrichten auf dem Bildschirm.

Der suspend_vm Funktion wird verwendet, um eine virtuelle Maschine mit dem zu suspendieren .VMX Datei der virtuellen Maschine. Es druckt auch die erforderlichen Protokollnachrichten auf dem Bildschirm.

Einige Variablen sind in den Zeilen 23-25 ​​definiert.

Konfigurationsdatei - Der absolute Weg zur Konfiguration.JSON -Datei.

num_vms - Verwendet JQ Berechnung der Anzahl der in der verfügbaren VMs Konfiguration.JSON Datei.

Aktion - Das erste Argument für Befehlszeilen ist die Aktion, die auszuführen ist. Der Auto-Start Das Skript verwendet es, um zu bestimmen, ob VMs gestartet werden oder VMs ausgesetzt werden sollen.

Die Zeilen 27-42 werden verwendet, um alle verfügbaren virtuellen Maschinen in der Konfiguration.JSON Datei, aktivieren/deaktivieren Nachricht.automatische Antwort Eigenschaft für jede virtuelle Maschine und starten/aussetzen die virtuellen Maschinen.

In der Schleife definieren Zeilen 29-31 einige Variablen.

VM_NAME - Verwendet JQ um das zu bekommen Name Eigenschaft der virtuellen Maschine aus dem Konfiguration.JSON Datei.

VMX_PATH - Verwendet JQ um das zu bekommen VMXPath Eigenschaft der virtuellen Maschine aus dem Konfiguration.JSON Datei.

vm_autostart - Verwendet JQ um das zu bekommen Auto-Start Eigenschaft der virtuellen Maschine aus dem Konfiguration.JSON Datei.

Wenn der Aktionswert startet und VM_Autostart (die Autostart -Eigenschaft in config.JSON) ist wahr, entfernen Sie die Nachricht.automatische Antwort Eigentum aus dem .VMX Datei (falls vorhanden) der virtuellen Maschine, festgelegt Nachricht.automatische Antwort Eigentum an WAHR im .VMX Datei der virtuellen Maschine und starten Sie die virtuelle Maschine.

Wenn der Aktionswert suspendiert ist und vm_autostart (die autostart -Eigenschaft in config.JSON) ist wahr, entfernen Sie die MSG.Autoanswer Eigentum aus dem .VMX -Datei Suspendieren Sie die virtuelle Maschine.

Sobald Sie das erstellt haben Auto-Start Bash -Skript, machen Sie es mit dem folgenden Befehl ausführbar:

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

Starten Sie das VMware -Autostart -Programm automatisch im Boot

In diesem Abschnitt erstelle ich einen Systemdienst, damit er die ausführt Auto-Start BASH -Skript automatisch zur Startzeit veröffentlichen.

Erstellen Sie eine neue Datei VMware-Autostart.Service im Projektverzeichnis /opt/vmware-autostart folgendermaßen:

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

Geben Sie die folgenden Zeilen in die ein VMware-Autostart.Service Datei.

[Einheit]
Beschreibung = automatisch VMware Virtual Machine starten
Nach = Netzwerk.Ziel VMware.Service
Erfordert = Netzwerk.Ziel VMware.Service
Konflikte = Abschaltdown.Ziel
Vor = Abschaltung.Zielen Sie Multi-Benutzer.Ziel
[Service]
Typ = OneShot
Execstart =/opt/vmware-autostart/bin/autostart start
ExecStop =/opt/vmware-autostart/bin/autostart suspend
Neu starten = no
RemaFterexit = ja
User = shovon
Gruppe = Shovon
[Installieren]
Wantby by = multi-user.Ziel

Sobald Sie fertig sind, drücken Sie + X gefolgt von Y Und um die zu retten VMware-Autostart.Service Datei.

Hier,

ExecStart leitet die Auto-Start Skript mit a Start Befehlszeilenoption zur Startzeit. Also alle virtuellen Maschinen in der verfügbaren Konfiguration.JSON Die Datei wird automatisch im Systemstart gestartet.

ExecStop macht das Gegenteil. Es läuft die Auto-Start Skript mit dem aussetzen Befehlszeilenoption, bevor Sie den Computer herunterfahren oder neu starten. Also alle virtuellen Maschinen in der verfügbaren Konfiguration.JSON Die Datei wird beim Herunterfahren oder Neustart des Systems ausgesetzt.

Der Auto-Start Das Skript wird als Benutzer ausgeführt Shovon und Gruppe Shovon. Sie müssen es durch Ihr Login ersetzen Benutzer und primär Gruppe Name.

Sie können Ihr Login finden Benutzer und primär Gruppe Name mit dem folgenden Befehl:

$ id

Eine symbolische Verbindung von der VMware-Autostart.Service Datei in der /etc/systemd/system Verzeichnis wie folgt:

$ sudo ln -s/opt/vmware-autostart/vmware-autostart.Service/etc/systemd/system/vmware-autostart.Service

Führen Sie den folgenden Befehl aus, damit die systemd -Änderungen wirksam werden sollen:

$ sudo systemctl Daemon-Reload

Fügen Sie nun den Systemd -Dienst hinzu VMware-Autostart.Service zum Systemstart, um automatisch zur Kartonzeit zu starten.

$ sudo systemctl aktivieren vmware-autostart.Service

Testen des VMware Autostart -Programms

Um zu überprüfen, ob das Programm wie erwartet funktioniert, müssen Sie Ihren Computer neu starten. Stellen Sie vor diesem Fall sicher /opt/vmware-autostart/config.JSON Datei.

Ich werde das Ubuntu-Desktop-1 hinzufügen und PC 1 VMs in/opt/vmware-autostart/config arbeiten.JSON -Datei für die Demonstration.

Sobald Sie fertig sind, starten Sie Ihren Computer mit dem folgenden Befehl neu:

$ sudo Neustart

Sobald Ihr Computerstiefel startet, sollten Sie sehen, dass der SystemD -Dienst VMware-Autostart.Service Ist aktiv.

$ sudo systemctl status vmware-autostart.Service

Aus den Systemd -Protokollen können Sie sehen, dass die VMs Ubuntu-Desktop-1 Und Arbeit PC 1 automatisch gut begann in Ordnung.

Um zu bestätigen, dass die VMware Workstation Pro 16 VMs automatisch mit dem BOOT gestartet wurden, führen Sie den folgenden Befehl aus:

$ vmrun Liste

Wie Sie sehen können, werden die VMware Workstation Pro 16 VMs gut ausgeführt.

Sie können auch überprüfen, ob die VMs aus der VMware Workstation Pro 16 -App ausgeführt werden.

Um zu testen, ob die VMs beim Herunterfahren oder Neustart Ihres Computers suspendiert werden, öffnen Sie eines der VMs, die Sie für den Autostart konfigurierten.

Schließen Sie die VMware Workstation Pro 16 App, während die VM ausgeführt wird.

Klicke auf Im Hintergrund laufen wie im Screenshot unten markiert.

Starten Sie Ihren Computer nun mit dem folgenden Befehl neu:

$ sudo Neustart

Öffnen Sie nach Ihren Computerstiefeln die VMware Workstation Pro 16 App und Sie sollten sehen, dass sich die VM im selben Zustand wie beim letzten Mal befindet (aus dem suspendierten Zustand wiederhergestellt).

Bekannte Probleme

Halten Sie eine virtuelle Maschine in der VMware Workstation Pro 16 App geöffnet. Der VMware Autostart Das Programm kann den virtuellen Computer beim Herunterfahren oder Neustart Ihres Computers nicht aussetzen, während Sie die VMware Workstation Pro 16 App geöffnet halten. Es kann selten sein, dass Menschen ihren Computer herunterfahren oder neu starten, während sie Programme offen halten. Das Programm könnte jedoch verbessert werden, um sicherzustellen, dass die VMware Workstation Pro 16 App geschlossen ist, bevor virtuelle Maschinen suspendiert werden.

Github -Repository

Das in diesem Artikel gezeigte VMware AutoStart -Programm ist auch auf GitHub verfügbar. Sie können das GitHub-Repository (Shovon8/VMware-Autostart) dieses Programms klonen, um sich etwas einzeln zu ersparen.

GitHub Link: https: // github.com/shovon8/vmware-autostart

Abschluss

Dieser Artikel zeigt Ihnen, wie Sie a schreiben können VMware Autostart Programm zum automatischen Starten von VMware Workstation Pro 16 virtuelle Maschinen auf dem BOOT und suspendieren Sie sie vor dem Herunterfahren oder Neustart des Systems.

Verweise

[1] VMware - Befehlszeilenanwendung

[2] Verwenden von VMRUN zur Steuerung virtueller Maschinen

[3] Zählen Sie JSON -Array -Elemente mit JQ - phpfog.com

[4] So entfernen Sie Zitate aus den Ergebnissen? · Ausgabe Nr. 1735 · Stedolan/JQ · Github