Jak autostart a vMware WorkStation Pro Top 10 wirtualna maszyna wirtualna na Linux

Jak autostart a vMware WorkStation Pro Top 10 wirtualna maszyna wirtualna na Linux
Przed VMware WorkStation Pro 16 możesz automatycznie użyć funkcji udostępnionej maszyny wirtualnej, aby uruchomić maszyny wirtualne w czasie rozruchu. VMware WorkStation Pro 16 wycofuje Udostępniona maszyna wirtualna funkcja. Chociaż nadal możesz go używać, prawdopodobnie zostanie on upuszczony w następnej wersji VMware WorkStation Pro.

W tym artykule pokażę, jak napisać VMware Autostart Program korzystający z języka scenariuszy Shell i skonfiguruj SystemD, aby uruchomić VMware WorkStation Pro 16 Maszyny wirtualne na rozruchu automatycznie. W ten sposób nadal będziesz mieć plan tworzenia kopii zapasowych, gdy VMware Workstation Pro zrzuci Udostępniona maszyna wirtualna funkcja na dobre. Więc zacznijmy.

Spis treści

  1. Wprowadzenie do programu VMware Autostart
  2. Instalowanie wymaganych zależności
  3. Pisanie programu VMware Autostart
  4. Automatycznie uruchamianie programu Autostart VMware w rozruchu
  5. Testowanie programu VMware Autostart
  6. Znane problemy
  7. Repozytorium Github
  8. Wniosek
  9. Bibliografia

Wprowadzenie do programu VMware Autostart

Główny cel VMware Autostart program:

1) Przeczytaj plik konfiguracyjny składający się ze wszystkich maszyn wirtualnych VMware WorkStation Pro 16.

2) Automatycznie uruchom skonfigurowane maszyny wirtualne w czasie rozruchu i zawiesić je przed wyłączeniem systemu lub ponownym uruchomieniem.

Aby to osiągnąć, stworzyłem,

1) Centralny plik konfiguracyjny VM konfigurator.JSON.

2) skrypt powłoki bash automatyczny start. Odczytuje plik konfiguracyjny konfigurator.JSON Aby określić maszyny wirtualne do zarządzania. Rozpocznie lub zawiesnie skonfigurowane maszyny wirtualne w zależności od argumentu wiersza polecenia dostarczonego do skryptu powłoki w czasie wykonywania.

3) Plik jednostki SystemD VMware-Autostart.praca. Automatycznie uruchomi skrypt bash automatyczny start Aby uruchomić wszystkie skonfigurowane maszyny wirtualne w czasie rozruchu. Uruchomi także skrypt bash automatyczny start Aby zawiesić skonfigurowane maszyny wirtualne przed wyłączeniem systemu lub ponownym uruchomieniem.

Instalowanie wymaganych zależności

Użyłem pliku JSON konfigurator.JSON do przechowywania konfiguracji VMware VM, że VMware Autostart Program będzie używany do określenia maszyn wirtualnych do Autostart podczas rozruchu.

Aby przeanalizować plik konfiguracyjny JSON ze skryptu powłoki Bash w programie VMware Autostart, użyłem JQ Komenda.

Na Ubuntu, Debian, Linux Mint, KDE Neon i inne dystrybucje Linux oparte na Debiana; Możesz zainstalować JQ Z następującym poleceniem:

$ sudo apt instal jq -y

W Centos 8/Rhel 8 możesz zainstalować JQ Z następującym poleceniem:

$ sudo dnf instaluj jq -y

Raz JQ jest instalowany, uruchom następujące polecenie, aby sprawdzić, czy JQ jest dostępny z terminalu.

$ jq --version

Pisanie programu VMware Autostart

Ta sekcja pokaże, jak napisać VMware Autostart program i wyjaśnij, jak to działa.

Najpierw utwórz nowy katalog projektu /opt/vmware-autostart i stwórz kosz/ Podkazkodmienia w katalogu projektu w następujący sposób:

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

Stwórz nowy konfigurator.JSON Plik w katalogu projektu /opt/vmware-autostart Z następującym poleceniem:

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

konfigurator.JSON Plik przechowuje listę VMware WorkStation Pro 16 VMS, które chcesz zacząć automatycznie.

Wpis VMware Workstation Pro 16 VM ma tylko 3 właściwości.

  • nazwa - Nazwa maszyny wirtualnej
  • VMXPath - Bezwzględna ścieżka do .VMX plik maszyny wirtualnej
  • automatyczny start - Boolean. Jeśli PRAWDA, VM zostanie automatycznie uruchomiona w czasie rozruchu. Jeśli FAŁSZ, VM nie będzie zarządzana przez VMware Autostart program. Więc nie zacznie się automatycznie w czasie rozruchu.

Możesz znaleźć Nazwa maszyny wirtualnej i VMXPath z aplikacji VMware Workstation Pro 16, jak zaznaczono na zrzucie ekranu poniżej.

Teraz, gdy znasz format pliku konfiguracyjnego, napiszmy VMware Program Autostart Korzystanie z języka scenariuszy Shell Bash.

Utwórz nowy skrypt bash automatyczny start w /opt/vmware-autostart/bin Katalog z następującym poleceniem:

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

Wpisz w następujących wierszach kodów w automatyczny start Skrypt powłoki.

#!/bin/bash
msg_auto_answer_disable ()
echo "Wyłączanie MSG.autoanswer dla $ vm_name "
sed -i.bak -s '/^msg \.autoanswer/d '"$ vmx_path"

msg_auto_answer_enable ()
echo "umożliwiający MSG.autoanswer dla $ vm_name "
echo 'Msg.autoanswer = „true” >> „$ vmx_path”

start_vm ()
echo „$ vm_name zaczyna…”
/usr/bin/vmrun -t wS start "$ vmx_path" nogui 2>/dev/null && echo "$ vm_name uruchomiono.„|| echo” $ vm_name nie udało się uruchomić."

suppend_vm ()
Echo „$ vm_name zawiesza…”
/usr/bin/vmrun -t wS zawiesina "$ vmx_path" hard 2>/dev/null && echo "$ vm_name zawieszony.„|| echo” $ vm_name nie udało się zawiesić."

config_file =/opt/vmware-autostart/config.JSON
num_vms = $ (JQ '.VMS | długość' < $config_file)
Action = "1 $"
dla ((licznik = 0; licznik < $num_vms; counter++))
Do
vm_name = $ (JQ -J ".VMS [$ Counter].nazwa" < $config_file)
vmx_path = $ (JQ -J ".VMS [$ Counter].vmxpath " < $config_file)
VM_AUTOSTART = $ (JQ -J ".VMS [$ Counter].automatyczny start" < $config_file)
Jeśli [„$ action” == "start" -a "$ vm_autostart" == "true"]
Następnie
msg_auto_answer_disable && msg_auto_answer_enable && start_vm
fi
Jeśli [„$ action” == „zawiesić” -a „$ vm_autostart” == „true”]
Następnie
MSG_AUTO_ANSWER_DISABLE && SUPEND_VM
fi
zrobione
Wyjście 0

automatyczny start Skrypt bash powinien wyglądać w następujący sposób.

Po zakończeniu naciśnij + X śledzony przez Y I Aby uratować automatyczny start Skrypt bash.

Tutaj,

MSG_AUTO_ANSWER_DISABLE I msg_auto_answer_enable funkcje służą do usuwania i ustawienia MSG.automatyczna odpowiedź opcja w .VMX odpowiednio plik maszyny wirtualnej.

Gdy MSG.automatyczna odpowiedź jest ustawione na PRAWDA, VMware Workstation Pro 16 Maszyny wirtualne nie czekają na żadne dane wejściowe użytkownika. Jeśli to nie jest ustawione, nie będziesz mógł uruchomić maszyn wirtualnych w tle za pomocą automatyczny start skrypt, jeśli wymaga to interakcji użytkownika, aby rozpocząć.

start_vm Funkcja służy do uruchamiania maszyny wirtualnej za pomocą .VMX plik maszyny wirtualnej. Drukuje również niezbędne komunikaty dziennika na ekranie.

SUPEND_VM Funkcja służy do zawieszenia maszyny wirtualnej za pomocą .VMX plik maszyny wirtualnej. Drukuje również niezbędne komunikaty dziennika na ekranie.

Niektóre zmienne są zdefiniowane w wierszach 23-25.

Config_file - Bezwzględna ścieżka do konfiguracji.plik JSON.

num_vms - Zastosowania JQ Aby obliczyć liczbę maszyn wirtualnych dostępnych w konfigurator.JSON plik.

działanie - Pierwszym argumentem wiersza poleceń jest działanie do wykonania. automatyczny start Skrypt używa go do ustalenia, czy uruchomić maszyny wirtualne, czy zawiesić VMS.

Linie 27-42 są używane do przejścia przez wszystkie dostępne maszyny wirtualne w konfigurator.JSON plik, włącz/wyłącz MSG.automatyczna odpowiedź właściwość dla każdej maszyny wirtualnej i uruchom/zawieszenie maszyn wirtualnych.

W pętli linie 29-31 definiują niektóre zmienne.

VM_NAME - Zastosowania JQ aby uzyskać nazwa właściwość maszyny wirtualnej z konfigurator.JSON plik.

vmx_path - Zastosowania JQ aby uzyskać VMXPath właściwość maszyny wirtualnej z konfigurator.JSON plik.

VM_AUTOSTART - Zastosowania JQ aby uzyskać automatyczny start właściwość maszyny wirtualnej z konfigurator.JSON plik.

Jeśli wartość akcji jest uruchomiona i VM_AUTOSTART (właściwość Autostart w konfiguracji.JSON) jest prawda, usuń MSG.automatyczna odpowiedź własność z .VMX plik (jeśli istnieje) maszyny wirtualnej, ustaw MSG.automatyczna odpowiedź własność do PRAWDA w .VMX plik maszyny wirtualnej i uruchom maszynę wirtualną.

Jeśli wartość działania jest zawieszona i VM_AUTOSTART (właściwość Autostart w konfiguracji.JSON) jest prawda, usuń MSG.nieruchomość autoanswer z .plik VMX zawiesaj maszynę wirtualną.

Po utworzeniu automatyczny start Skrypt bash, uczyń go wykonalnym za pomocą następującego polecenia:

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

Automatycznie uruchamianie programu Autostart VMware w rozruchu

W tej sekcji utworzę usługę systemową, aby uruchomiła automatyczny start Skrypt bash automatycznie w czasie rozruchu.

Utwórz nowy plik VMware-Autostart.praca W katalogu projektu /opt/vmware-autostart następująco:

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

Wpisz w następujących wierszach w VMware-Autostart.praca plik.

[Jednostka]
Opis = automatycznie uruchom maszynę wirtualną VMware
Po = sieć.Target VMware.praca
Wymaga = sieć.Target VMware.praca
Konflikty = wyłączenie.cel
Przed = wyłączenie.Target Multi-User.cel
[Praca]
Typ = OneShot
ExecStart =/opt/vmware-autostart/bin/autostart start
Execstop =/opt/vmware-autostart/bin/autostart zawiesina
Restart = nie
Resztki autyczne = tak
Użytkownik = shovon
Grupa = shovon
[Zainstalować]
Wantby = Multi-User.cel

Po zakończeniu naciśnij + X śledzony przez Y I Aby uratować VMware-Autostart.praca plik.

Tutaj,

ExecStart uruchamia automatyczny start skrypt z początek Opcja wiersza polecenia w czasie rozruchu. Tak więc wszystkie maszyny wirtualne dostępne w konfigurator.JSON Plik zostanie uruchomiony automatycznie na rozruchu systemowym.

Execstop robi coś przeciwnego. Działa automatyczny start skrypt z wstrzymać Opcja wiersza polecenia przed wyłączeniem lub ponownym uruchomieniem komputera. Tak więc wszystkie maszyny wirtualne dostępne w konfigurator.JSON Plik zostanie zawieszony podczas wyłączania systemu lub ponownego uruchomienia.

automatyczny start Skrypt zostanie uruchomiony jako użytkownik Shovon i grupa Shovon. Musisz go wymienić swoim loginem Użytkownik i podstawowe Grupa nazwa.

Możesz znaleźć swój login Użytkownik i podstawowe Grupa Nazwa z następującym poleceniem:

$ id

Zrób symboliczny link do VMware-Autostart.praca plik w /etc/systemd/system katalog w następujący sposób:

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

Aby zmienia się systemd, uruchom następujące polecenie:

$ sudo systemctl demon-powód

Teraz dodaj usługę SystemD VMware-Autostart.praca do uruchamiania systemu, aby automatycznie uruchomić w czasie rozruchu.

$ sudo systemCtl Włącz VMware-Autostart.praca

Testowanie programu VMware Autostart

Aby sprawdzić, czy program działa zgodnie z oczekiwaniami, musisz ponownie uruchomić komputer. Zanim to zrobisz, pamiętaj, aby dodać maszyny wirtualne, które chcesz automatycznie zacząć od rozruchu w /opt/vmware-autostart/config.JSON plik.

Dodam maszyny wirtualne Ubuntu-Desktop-1 i PC 1 w/opt/vmware-autostart/config.plik JSON do demonstracji.

Po zakończeniu uruchom ponownie komputer za pomocą następującego polecenia:

$ sudo restart

Gdy komputerowy komputer powinien zobaczyć, że usługa SystemD VMware-Autostart.praca Jest aktywny.

$ sudo Systemctl Status VMware-Autostart.praca

Z dzienników systemu można zobaczyć, że maszyny wirtualne Ubuntu-Desktop-1 I PC PC 1 zaczął się automatycznie dobrze.

Aby potwierdzić, że VMware WorkStation Pro 16 VMS rozpoczął się automatycznie w rozruchu, uruchom następujące polecenie:

Lista $ vmrun

Jak widać, VMware Workstation Pro 16 VMS działa dobrze.

Możesz również sprawdzić, czy maszyny wirtualne działają z aplikacji VMware WorkStation Pro 16, jak widać na zrzucie ekranu poniżej.

Aby sprawdzić, czy maszyny wirtualne zostaną zawieszone po wyłączeniu lub ponownym uruchomieniu komputera, otwórz jedną z wirtualnych wirtualnych, które skonfigurowałeś do AutoStart i uruchom dowolną aplikację.

Zamknij aplikację VMware WorkStation Pro 16 podczas pracy maszyny wirtualnej.

Kliknij Uruchom w tle jak zaznaczono na zrzucie ekranu poniżej.

Teraz ponownie uruchom komputer z następującym poleceniem:

$ sudo restart

Po uruchamianiu komputera otwórz aplikację VMware Workstation Pro 16 i powinieneś zobaczyć, że maszyna wirtualna jest w tym samym stanie, co ostatni raz (odzyskany ze stanu zawieszonego).

Znane problemy

Trzymaj maszynę wirtualną otwartą w aplikacji VMware Workstation Pro 16. VMware Autostart Program nie będzie mógł zawiesić maszyny wirtualnej podczas wyłączania lub ponownego uruchomienia komputera, jednocześnie utrzymując otwartą aplikację VMware WorkStation Pro 16. Ludzie może być rzadkie wyłączenie lub ponowne uruchomienie komputera, jednocześnie utrzymując otwarte programy. Ale program można ulepszyć, aby zapewnić, że aplikacja VMware Workstation Pro 16 jest zamknięta przed zawieszeniem maszyn wirtualnych.

Repozytorium Github

Program VMware Autostart wykazany w tym artykule jest również dostępny w GitHub. Możesz sklonować repozytorium GitHub (Shovon8/VMware-Autostart) tego programu, aby zapisać się na pisaniu.

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

Wniosek

Ten artykuł pokazuje, jak napisać VMware Autostart Program, aby automatycznie uruchomić VMware Workstation Pro 16 wirtualne maszyny na rozruchu i zawiesić je przed wyłączeniem systemu lub ponownym uruchomieniem.

Bibliografia

[1] VMware - Aplikacja wiersza poleceń

[2] Korzystanie z VMrun do sterowania maszynami wirtualnymi

[3] Policz elementy tablicy JSON z JQ - PHPFOG.com

[4] Jak usunąć cytaty z wyników? · Problem #1735 · Stedolan/JQ · Github