Hvordan autostart en VMware Workstation Pro Topp 10 virtuell maskin på Linux

Hvordan autostart en VMware Workstation Pro Topp 10 virtuell maskin på Linux
Før VMware Workstation Pro 16, kan du automatisk bruke den delte VM -funksjonen til å starte virtuelle maskiner på oppstartstidspunktet. VMware Workstation Pro 16 avskriver Delt VM trekk. Selv om du fremdeles kan bruke den, vil den sannsynligvis bli droppet i neste versjon av VMware Workstation Pro.

I denne artikkelen vil jeg vise deg hvordan du skriver en VMware Autostart Program ved hjelp av Bash Shell Scripting Language og konfigurere SystemD for å starte VMware Workstation Pro 16 Virtuelle maskiner på Boot automatisk. På denne måten vil du fortsatt ha en sikkerhetskopi når VMware Workstation Pro dropper Delt VM funksjon for godt. Så la oss komme i gang.

Innholdsfortegnelse

  1. Introduksjon til VMware AutostArt -programmet
  2. Installere nødvendige avhengigheter
  3. Å skrive VMware AutostArt -programmet
  4. Starter automatisk VMware AutostArt -programmet på oppstart
  5. Testing av VMware AutostArt -programmet
  6. kjente problemer
  7. GitHub Repository
  8. Konklusjon
  9. Referanser

Introduksjon til VMware AutostArt -programmet

Hovedformålet med VMware Autostart program:

1) Les en konfigurasjonsfil som består av alle VMware Workstation Pro 16 VMS som du vil starte på oppstartstiden automatisk.

2) Start automatisk de konfigurerte VM -ene ved oppstartstid og suspender dem før systemavstengningen eller starter på nytt.

For å oppnå dette har jeg opprettet,

1) En sentral VM -konfigurasjonsfil konfigurasjon.JSON.

2) Et bash shell manus Auto Start. Den vil lese konfigurasjonsfilen konfigurasjon.JSON For å bestemme VM -ene for å administrere. Det vil starte eller suspendere de konfigurerte VM-ene, avhengig av kommandolinje-argumentet gitt til Shell-skriptet ved kjøretid.

3) En SystemD -enhetsfil VMware-Autostart.service. Det kjører automatisk bashptet Auto Start For å starte alle de konfigurerte VM -ene på oppstartstidspunktet. Det vil også kjøre bashskriptet Auto Start For å suspendere de konfigurerte VM -ene før systemet slår seg av eller starter på nytt.

Installere nødvendige avhengigheter

Jeg har brukt en JSON -fil konfigurasjon.JSON for lagring av VMware VM -konfigurasjonen som VMware Autostart Programmet vil bruke for å bestemme de virtuelle maskinene til Autostart på oppstart.

For å analysere JSON -konfigurasjonsfilen fra Bash Shell -skriptet til VMware AutostArt -programmet, har jeg brukt JQ kommando.

På Ubuntu, Debian, Linux Mint, Kde Neon og andre Debian -baserte Linux -distribusjoner; du kan installere JQ med følgende kommando:

$ sudo apt install jq -y

På Centos 8/RHEL 8 kan du installere JQ med følgende kommando:

$ sudo dnf installer jq -y

En gang JQ er installert, kjør følgende kommando for å se om JQ er tilgjengelig fra terminalen.

$ JQ -Versjon

Å skrive VMware AutostArt -programmet

Denne delen vil vise deg hvordan du skriver VMware Autostart program og forklar hvordan det fungerer.

Opprett først en ny prosjektkatalog /OPT/VMware-Autostart og opprette en søppel/ Underkatalog i prosjektkatalogen som følger:

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

Lage en ny konfigurasjon.JSON fil i prosjektkatalogen /OPT/VMware-Autostart med følgende kommando:

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

De konfigurasjon.JSON Fil holder en liste over VMware Workstation Pro 16 VMS som du vil starte på oppstart automatisk.

En VMware Workstation Pro 16 VM -oppføring har bare 3 egenskaper.

  • Navn - Navnet på den virtuelle maskinen
  • VMXPath - Den absolutte veien til .VMX Fil av den virtuelle maskinen
  • Auto Start - En boolsk. Hvis ekte, VM blir automatisk startet på oppstartstidspunktet. Hvis falsk, VM vil ikke bli administrert av VMware Autostart program. Så det vil ikke automatisk starte på oppstartstidspunktet.

Du kan finne Virtuell maskinens navn og VMXPath Fra VMware Workstation Pro 16 -appen som merket i skjermdumpen nedenfor.

Nå som du kjenner konfigurasjonsfilformatet, la oss skrive VMware Autostart -program Bruke Bash Shell Scripting Language.

Lag et nytt bashskript Auto Start i /opt/vmware-autostart/bin Katalog med følgende kommando:

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

Skriv inn følgende koder i Auto Start Shell -skript.

#!/bin/bash
msg_auto_answer_disable ()
ekko "Deaktivering av MSG.Autoanswer for $ vm_name "
sed -i.bak -s '/^msg \.Autoanswer/d '"$ vmx_path"

msg_auto_answer_enable ()
ekko "Aktivering av MSG.Autoanswer for $ vm_name "
ekko 'msg.autoanswer = "true" '>> "$ vmx_path"

start_vm ()
Echo "$ vm_name starter ..."
/usr/bin/vmrun -t ws start "$ vmx_path" nogui 2>/dev/null && echo "$ vm_name startet."|| ekko" $ vm_name klarte ikke å starte.""

Suspend_vm ()
Echo "$ vm_name suspendering ..."
/usr/bin/vmrun -t ws suspendering "$ vmx_path" hard 2>/dev/null && ekko "$ vm_name suspendert."|| ekko" $ vm_name klarte ikke å bli suspendert.""

config_file =/opt/vmware-autostart/config.JSON
num_vms = $ (jq '.VMS | lengde' < $config_file)
Handling = "$ 1"
for ((teller = 0; teller < $num_vms; counter++))
gjøre
vm_name = $ (jq -j ".VMS [$ teller].Navn" < $config_file)
vmx_path = $ (jq -j ".VMS [$ teller].vmxpath " < $config_file)
vm_autostart = $ (jq -j ".VMS [$ teller].Auto Start" < $config_file)
hvis ["$ action" == "start" -a "$ vm_autostart" == "true"]
deretter
msg_auto_answer_disable && msg_auto_answer_enable && start_vm
fi
hvis ["$ action" == "SUSPENT" -A "$ VM_AUTOSTART" == "TRUE"]
deretter
msg_auto_answer_disable && suspencept_vm
fi
Ferdig
Avslutt 0

De Auto Start Bash -skriptet skal se ut som følger.

Når du er ferdig, trykk + X etterfulgt av Y og For å redde Auto Start Bash -skript.

Her,

De msg_auto_answer_disable og msg_auto_answer_enable Funksjoner brukes til å fjerne og stille inn msg.automatisk svar alternativet i .VMX henholdsvis VM -filen.

Når msg.automatisk svar er satt til EKTE, VMware Workstation Pro 16 Virtuelle maskiner vil ikke vente på noen brukerinnganger. Hvis dette ikke er angitt, vil du ikke kunne starte virtuelle maskiner i bakgrunnen ved å bruke Auto Start skript hvis det krever at noe brukerinteraksjon starter.

De start_vm funksjon brukes til å starte en virtuell maskin ved hjelp av .VMX Fil av den virtuelle maskinen. Den skriver også ut de nødvendige loggmeldingene på skjermen.

De Suspend_vm Funksjon brukes til å suspendere en virtuell maskin ved hjelp av .VMX Fil av den virtuelle maskinen. Den skriver også ut de nødvendige loggmeldingene på skjermen.

Noen variabler er definert i linjer 23-25.

config_file - Den absolutte veien til konfigurasjonen.JSON -fil.

num_vms - Bruker JQ For å beregne antall VM -er som er tilgjengelige i konfigurasjon.JSON fil.

handling - Det første kommandolinjeargumentet er handlingen å utføre. De Auto Start Skriptet bruker det for å bestemme om de skal starte VMS eller suspendere VM -er.

Linjer 27-42 brukes til å krysse gjennom alle tilgjengelige virtuelle maskiner i konfigurasjon.JSON fil, aktiver/deaktiverer msg.automatisk svar Eiendom for hver virtuelle maskin, og start/suspendere de virtuelle maskinene.

I loopen definerer linjer 29-31 noen variabler.

VM_NAME - Bruker JQ å få Navn Eiendom til den virtuelle maskinen fra konfigurasjon.JSON fil.

VMX_PATH - Bruker JQ å få VMXPath Eiendom til den virtuelle maskinen fra konfigurasjon.JSON fil.

vm_autostart - Bruker JQ å få Auto Start Eiendom til den virtuelle maskinen fra konfigurasjon.JSON fil.

Hvis handlingsverdien er start og vm_autostart (Autostart -egenskapen i konfigurasjon.json) er sant, fjern msg.automatisk svar eiendom fra .VMX fil (hvis eksisterer) av den virtuelle maskinen, sett msg.automatisk svar eiendom til EKTE i .VMX fil med den virtuelle maskinen, og start den virtuelle maskinen.

Hvis handlingsverdien er suspendert og vm_autostart (Autostart -egenskapen i konfigurasjonen.json) er sant, fjern msg.Autoanswer -eiendom fra .VMX -fil suspenderer den virtuelle maskinen.

Når du har opprettet Auto Start Bash -skript, gjør det kjøres med følgende kommando:

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

Starter automatisk VMware AutostArt -programmet på oppstart

I denne delen vil jeg lage en systemtjeneste slik at den kjører Auto Start Bash -skript automatisk på oppstartstidspunktet.

Lag en ny fil VMware-Autostart.service I prosjektkatalogen /OPT/VMware-Autostart følgende:

$ sudo nano/opt/vMware-Autostart/VMware-Autostart.service

Skriv inn følgende linjer i VMware-Autostart.service fil.

[Enhet]
Beskrivelse = Start VMware Virtual Machine automatisk
Etter = nettverk.Mål VMware.service
Krever = nettverk.Mål VMware.service
Konflikter = nedleggelse.mål
Før = avslutning.Mål Multi-User.mål
[Service]
Type = Oneshot
ExecStart =/opt/vmware-autostart/bin/autostart start
ExecStop =/opt/vMware-Autostart/bin/autostart suspend
Omstart = nei
RESTEFTEREXIT = Ja
Bruker = Shovon
Gruppe = shovon
[Installere]
WantedBy = Multi-User.mål

Når du er ferdig, trykk + X etterfulgt av Y og For å redde VMware-Autostart.service fil.

Her,

Execstart kjører Auto Start manus med en start Kommandolinjealternativ ved oppstartstidspunktet. Så alle de virtuelle maskinene som er tilgjengelige i konfigurasjon.JSON Filen vil bli startet automatisk på systemoppstart.

Execstop gjør det motsatte. Det kjører Auto Start manus med utsette Kommandolinjealternativet før du stenger eller starter datamaskinen på nytt. Så alle de virtuelle maskinene som er tilgjengelige i konfigurasjon.JSON Filen vil bli suspendert ved stenging av systemet eller omstart.

De Auto Start Skript blir kjørt som brukeren Shovon og gruppe Shovon. Du må erstatte den med påloggingen Bruker og primær Gruppe Navn.

Du kan finne påloggingen din Bruker og primær Gruppe Navn med følgende kommando:

$ id

Lage en symbolsk lenke av VMware-Autostart.service fil i /etc/systemd/system Katalog som følger:

$ sudo ln -s/opt/vMware-Autostart/VMware-Autostart.Service/etc/SystemD/System/VMware-Autostart.service

For at SystemD -endringene skal tre i kraft, kjør følgende kommando:

$ sudo SystemCTL Daemon-Reload

Legg nå SystemD -tjenesten VMware-Autostart.service til systemoppstarten for automatisk å starte på oppstartstidspunktet.

$ sudo SystemCTL Aktiver VMware-Autostart.service

Testing av VMware AutostArt -programmet

For å bekrefte om programmet fungerer som forventet, må du starte datamaskinen på nytt. Før du gjør det, må du huske å legge til VM -ene som du automatisk vil starte på oppstart i /opt/vmware-autostart/config.JSON fil.

Jeg vil legge til Ubuntu-Desktop-1 og jobbe PC 1 VMS i/OPT/VMware-Autostart/Config.JSON -fil for demonstrasjonen.

Når du er ferdig, må du starte datamaskinen på nytt med følgende kommando:

$ sudo omstart

Når datamaskinen din støvler, bør du se at SystemD -tjenesten VMware-Autostart.service er aktiv.

$ sudo systemctl status vmware-autostart.service

Fra SystemD -logger kan du se at VM -ene Ubuntu-Desktop-1 og Arbeid PC 1 Startet automatisk helt fint.

For å bekrefte at VMware Workstation Pro 16 VMS startet automatisk på oppstart, kjører du følgende kommando:

$ VMRUN -liste

Som du ser, er VMware Workstation Pro 16 VM -er helt fint.

Du kan også bekrefte at VMS kjører fra VMware Workstation Pro 16 -appen, som du kan se på skjermbildet nedenfor.

For å teste om VM -ene vil bli suspendert når du stenger eller starter datamaskinen på nytt, åpner du en av VM -ene du har konfigurert til Autostart og starter hvilken som helst app.

Lukk VMware Workstation Pro 16 -appen mens VM kjører.

Klikk på Kjør i bakgrunnen Som merket på skjermbildet nedenfor.

Nå, start datamaskinen på nytt med følgende kommando:

$ sudo omstart

Når datamaskinen din støvler, åpner du VMware Workstation Pro 16 -appen, og du skal se at VM er i samme tilstand som forrige gang (utvunnet fra den suspenderte tilstanden).

kjente problemer

Hold en virtuell maskin åpnet i VMware Workstation Pro 16 -appen. De VMware Autostart Programmet vil ikke kunne suspendere den virtuelle maskinen når du stenger eller starter datamaskinen på nytt mens du holder VMware Workstation Pro 16 -appen åpen. Det kan være sjelden at folk slår seg ned eller starter datamaskinen på nytt mens de holder programmer åpne. Men programmet kan forbedres for å sikre at VMware Workstation Pro 16 -appen er stengt før du suspenderer virtuelle maskiner.

GitHub Repository

VMware Autostart -programmet demonstrert i denne artikkelen er også tilgjengelig på GitHub. Du kan klone GitHub-depotet (Shovon8/VMware-Autostart) av dette programmet for å spare deg.

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

Konklusjon

Denne artikkelen viser deg hvordan du skriver en VMware Autostart program for automatisk.

Referanser

[1] VMware - Command Line Application

[2] Bruke VMRUN for å kontrollere virtuelle maskiner

[3] Tell JSON Array -elementer med JQ - PHPFOG.com

[4] Hvordan fjerne sitater fra resultatene? · Utgave #1735 · Stedolan/JQ · GitHub