In questo articolo, ti mostrerò come scrivere a VMware Autostart Programma utilizzando il linguaggio di scripting bash shell e configurare systemd per avviare le macchine virtuali VMware Workstation Pro 16 al boot automaticamente. In questo modo, avrai ancora un piano di backup quando VMware Workstation Pro fa cadere il VM condivisa caratteristica per sempre. Quindi iniziamo.
Sommario
Introduzione al programma VMware AutoStart
Lo scopo principale del VMware Autostart programma:
1) Leggi un file di configurazione composto da tutte le VM VMware Workstation Pro 16 che si desidera iniziare automaticamente al tempo di avvio.
2) Avviare automaticamente le VM configurate al momento dell'avvio e sospenderle prima dell'arresto del sistema o del riavvio.
Per raggiungere questo obiettivo, ho creato,
1) Un file di configurazione VM centrale configurazione.JSON.
2) Uno script di Shell Bash avvio automatico. Leggerà il file di configurazione configurazione.JSON Per determinare le VM da gestire. Avvia o sospende le VM configurate a seconda dell'argomento della riga di comando fornito allo script shell in fase di esecuzione.
3) Un file di unità di sistema VMware-Autostart.servizio. Eseguirà automaticamente lo script bash avvio automatico Per avviare tutte le macchine virtuali configurate al momento dell'avvio. Eseguirà anche lo script bash avvio automatico Per sospendere le VM configurate prima che il sistema si spegne o riavvia.
Installazione di dipendenze richieste
Ho usato un file JSON configurazione.JSON per la memorizzazione della configurazione VMware VM che il VMware Autostart Il programma userà per determinare le macchine virtuali su Autostart al boot.
Per analizzare il file di configurazione JSON dallo script Bash Shell del programma VMware AutoStart, ho usato il JQ comando.
Su Ubuntu, Debian, Linux Mint, KDE Neon e altre distribuzioni Linux basate su Debian; puoi installare JQ con il seguente comando:
$ sudo apt install jq -ySu CentOS 8/RHEL 8, puoi installare JQ con il seguente comando:
$ sudo dnf installa jq -yUna volta JQ è installato, eseguire il seguente comando per vedere se JQ è accessibile dal terminale.
$ JQ --VersionScrivere il programma VMware AutoStart
Questa sezione ti mostrerà come scrivere il VMware Autostart programma e spiega come funziona.
Innanzitutto, crea una nuova directory di progetto /opt/vmware-autostart e crea un bidone/ sottodirectory nella directory del progetto come segue:
$ sudo mkdir -pv/opt/vmware -autostart/binCrea un nuovo configurazione.JSON File nella directory del progetto /opt/vmware-autostart con il seguente comando:
$ sudo nano/opt/vmware-autostart/config.JSONIL configurazione.JSON Il file mantiene un elenco di VMware Workstation Pro 16 VM che si desidera iniziare automaticamente all'avvio.
Una voce VMware Workstation Pro 16 VM ha solo 3 proprietà.
Puoi trovare il il nome di Virtual Machine e VMXPath Dall'app VMware Workstation Pro 16 come contrassegnato nello screenshot seguente.
Ora che conosci il formato del file di configurazione, scriviamo il vmware Programma AutoStart Usando il linguaggio di scripting bash shell.
Crea un nuovo script bash avvio automatico nel /opt/vmware-autostart/cestino Directory con il seguente comando:
$ sudo nano/opt/vmware-autostart/bin/autostartDigitare le seguenti righe di codici in avvio automatico script shell.
#!/Bin/BashIL avvio automatico La sceneggiatura bash dovrebbe apparire come segue.
Una volta che hai finito, premere + X seguito da Y E per salvare il avvio automatico Script Bash.
Qui,
IL msg_auto_answer_disable E msg_auto_answer_enable Le funzioni vengono utilizzate per rimuovere e impostare il MSG.risposta automatica opzione in .VMX File della VM, rispettivamente.
Quando MSG.risposta automatica è impostato per VERO, VMware Workstation Pro 16 Virtual Machines non attendrà alcun input utente. Se questo non è impostato, non sarai in grado di avviare macchine virtuali in background usando il avvio automatico Script se richiede l'interazione dell'utente per l'avvio.
IL start_vm La funzione viene utilizzata per avviare una macchina virtuale utilizzando il .VMX File della macchina virtuale. Stampa anche i messaggi di registro necessari sullo schermo.
IL sospendere_vm La funzione viene utilizzata per sospendere una macchina virtuale utilizzando il .VMX File della macchina virtuale. Stampa anche i messaggi di registro necessari sullo schermo.
Alcune variabili sono definite nelle righe 23-25.
config_file - Il percorso assoluto per la configurazione.file json.
num_vms - Usi JQ per calcolare il numero di VM disponibili in configurazione.JSON file.
azione - Il primo argomento della riga di comando è l'azione da eseguire. IL avvio automatico Lo script lo usa per determinare se avviare VMS o sospendere VM.
Le righe 27-42 vengono utilizzate per attraversare tutte le macchine virtuali disponibili nel configurazione.JSON file, abilita/disabilita MSG.risposta automatica Proprietà per ogni macchina virtuale e avvia/sospendere le macchine virtuali.
Nel ciclo, le righe 29-31 definiscono alcune variabili.
vm_name - Usi JQ prendere il nome proprietà della macchina virtuale da configurazione.JSON file.
vmx_path - Usi JQ prendere il VMXPATH proprietà della macchina virtuale da configurazione.JSON file.
vm_autostart - Usi JQ prendere il avvio automatico proprietà della macchina virtuale da configurazione.JSON file.
Se il valore di azione è avviato e vm_autostart (la proprietà AutoStart in config.json) è vero, rimuovi il MSG.risposta automatica proprietà dal .VMX File (se esiste) della macchina virtuale, imposta MSG.risposta automatica proprietà a VERO nel .VMX File della macchina virtuale e avviare la macchina virtuale.
Se il valore dell'azione è sospeso e VM_AUTOSTART (la proprietà AutoStart in config.json) è vero, rimuovi il msg.proprietà autoanswer dal .File VMX sospendere la macchina virtuale.
Una volta che hai creato il avvio automatico Bash Script, renderlo eseguibile con il seguente comando:
$ sudo chmod +x/opt/vmware-autostart/bin/autostartAvvio automatico del programma VMware AutoStart al boot
In questa sezione, creerò un servizio di sistema in modo che esegui il avvio automatico Bash Script automaticamente al momento dell'avvio.
Crea un nuovo file VMware-Autostart.servizio Nella directory del progetto /opt/vmware-autostart come segue:
$ sudo nano/opt/vmware-autostart/vmware-autostart.servizioDigitare le seguenti righe in VMware-Autostart.servizio file.
[Unità]Una volta che hai finito, premere + X seguito da Y E per salvare il VMware-Autostart.servizio file.
Qui,
ExecStart gestisce il avvio automatico Script con a inizio Opzione della riga di comando al momento dell'avvio. Quindi, tutte le macchine virtuali disponibili in configurazione.JSON Il file verrà avviato automaticamente sullo avvio del sistema.
Execstop fa il contrario. Gestisce il avvio automatico script con il sospendere Opzione della riga di comando prima di chiudere o riavviare il computer. Quindi, tutte le macchine virtuali disponibili in configurazione.JSON Il file verrà sospeso al momento dell'arresto del sistema o del riavvio.
IL avvio automatico lo script verrà eseguito come utente Shovon e gruppo Shovon. È necessario sostituirlo con il tuo accesso Utente e primario Gruppo nome.
Puoi trovare il tuo accesso Utente e primario Gruppo Nome con il seguente comando:
$ idFare un legame simbolico del VMware-Autostart.servizio file in /etc/systemd/system directory come segue:
$ sudo ln -s/opt/vmware-autostart/vmware-autostart.Service/etc/systemd/system/vmware-autostart.servizioPer le modifiche SystemD per avere effetto, eseguire il seguente comando:
$ sudo systemctl demone-ricaricamentoOra aggiungi il servizio SystemD VMware-Autostart.servizio all'avvio del sistema per iniziare automaticamente al tempo di avvio.
$ sudo systemctl abilita vmware-autostart.servizioTestare il programma VMware AutoStart
Per verificare se il programma funziona come previsto, devi riavviare il computer. Prima di farlo, assicurati di aggiungere le macchine virtuali che si desidera avviare automaticamente su avvio nel /opt/vmware-autostart/config.JSON file.
Aggiungerò Ubuntu-Desktop-1 e lavorerò PC 1 VMS in/opt/vmware-autostart/config.File JSON per la dimostrazione.
Una volta che hai finito, riavvia il tuo computer con il seguente comando:
$ sudo riavviaUna volta che il tuo computer si avvia, dovresti vedere che il servizio Systemd VMware-Autostart.servizio È attivo.
$ sudo systemctl status vmware-autostart.servizioDai registri SystemD, puoi vedere che le VM Ubuntu-Desktop-1 E lavorare PC 1 iniziato automaticamente bene bene.
Per confermare che VMware Workstation Pro 16 VMS avviato automaticamente con l'avvio, eseguire il seguente comando:
Elenco $ vmrunCome puoi vedere, le macchine virtuali VMware Workstation Pro 16 stanno funzionando bene.
Puoi anche verificare che le VM siano in esecuzione dall'app VMware Workstation Pro 16, come puoi vedere nello screenshot seguente.
Per verificare se le VM verranno sospese quando si spegne o riavvia il tuo computer, apri una delle VM che hai configurato su AutoStart e avvia qualsiasi app.
Chiudi l'app VMware Workstation Pro 16 mentre la VM è in esecuzione.
Clicca su Esegui in background come contrassegnato nello screenshot seguente.
Ora, riavvia il tuo computer con il seguente comando:
$ sudo riavviaUna volta che il tuo computer si avvia, apri l'app VMware Workstation Pro 16 e dovresti vedere che la VM è nello stesso stato dell'ultima volta (recuperata dallo stato sospeso).
Problemi noti
Mantieni aperta una macchina virtuale nell'app VMware Workstation Pro 16. IL VMware Autostart Il programma non sarà in grado di sospendere la macchina virtuale quando si spegne o riavvia il computer mantenendo aperta l'app VMware Workstation Pro 16. Potrebbe essere raro per le persone chiudersi o riavviare il proprio computer mantenendo aperti i programmi. Ma il programma potrebbe essere migliorato per garantire che l'app VMware Workstation Pro 16 sia chiusa prima di sospendere le macchine virtuali.
Repository github
Il programma VMware AutoStart dimostrato in questo articolo è disponibile anche su GitHub. Puoi clonare il repository GitHub (Shovon8/VMware-Autostart) di questo programma per salvarti un po 'di battitura.
Link GitHub: https: // github.com/shovon8/vmware-autostart
Conclusione
Questo articolo ti mostra come scrivere un VMware Autostart Programma per avviare automaticamente le macchine virtuali VMware Workstation Pro 16 su avvio e sospenderle prima dell'arresto del sistema o del riavvio.
Riferimenti
[1] VMware - Applicazione della riga di comando
[2] Utilizzo di VMRun per controllare le macchine virtuali
[3] Count JSON Array Elements con JQ - Phpfog.com
[4] Come rimuovere le citazioni dai risultati? · Numero #1735 · Stedolan/JQ · GitHub