Cómo autostart una máquina virtual VMware Workstation Pro Top 10 en Linux

Cómo autostart una máquina virtual VMware Workstation Pro Top 10 en Linux
Antes de VMware Workstation Pro 16, puede usar automáticamente la función de VM compartida para iniciar máquinas virtuales en el momento del arranque. VMware Workstation Pro 16 desaproba el VM compartida característica. Aunque aún puede usarlo, probablemente se lanzará en la próxima versión de VMware Workstation Pro.

En este artículo, te mostraré cómo escribir un VMware AutoStart Programa utilizando el lenguaje de secuencias de comandos de shell bash y configure Systemd para iniciar vMware Workstation Pro 16 Máquinas virtuales en el arranque automáticamente. De esta manera, aún tendrá un plan de respaldo cuando VMware Workstation Pro deja caer el VM compartida Característica para bien. Entonces empecemos.

Tabla de contenido

  1. Introducción al programa VMware AutoStartt
  2. Instalación de dependencias requeridas
  3. Escribir el programa VMware AutoStartt
  4. Iniciar automáticamente el programa VMware AutoStart en arranque
  5. Prueba del programa VMware AutoStartt
  6. Problemas conocidos
  7. Repositorio de Github
  8. Conclusión
  9. Referencias

Introducción al programa VMware AutoStartt

El objetivo principal del VMware AutoStart programa:

1) Lea un archivo de configuración que consta de todas las máquinas virtuales de VMware Workstation Pro 16 que desea comenzar en el momento de arranque automáticamente.

2) Inicie automáticamente las máquinas virtuales configuradas en el momento del arranque y suspenda antes de que el sistema apague o reinicie.

Para lograr esto, he creado,

1) Un archivo de configuración de VM central configuración.json.

2) Un script de shell de bash autoencendido. Leerá el archivo de configuración configuración.json para determinar las máquinas virtuales para administrar. Iniciará o suspenderá las máquinas virtuales configuradas dependiendo del argumento de la línea de comandos proporcionado al script de shell en tiempo de ejecución.

3) Un archivo de la unidad Systemd vmware-autostart.servicio. Ejecutará automáticamente el script bash autoencendido Para iniciar todas las máquinas virtuales configuradas en el horario de arranque. También ejecutará el script bash autoencendido para suspender las máquinas virtuales configuradas antes de que el sistema se apague o se reinicie.

Instalación de dependencias requeridas

He usado un archivo json configuración.json para almacenar la configuración de VM VM que la VMware AutoStart El programa se utilizará para determinar las máquinas virtuales para autostart en el arranque.

Para analizar el archivo de configuración JSON desde el script de shell bash del programa VMware AutoStarSart, he usado el JQ dominio.

En Ubuntu, Debian, Linux Mint, Kde Neon y otras distribuciones de Linux con sede en Debian; puedes instalar JQ Con el siguiente comando:

$ sudo apt install jq -y

En Centos 8/Rhel 8, puede instalar JQ Con el siguiente comando:

$ sudo dnf install jq -y

Una vez JQ está instalado, ejecute el siguiente comando para ver si JQ es accesible desde la terminal.

$ JQ -Versión

Escribir el programa VMware AutoStartt

Esta sección le mostrará cómo escribir el VMware AutoStart programa y explique cómo funciona.

Primero, cree un nuevo directorio de proyectos /opt/vmware-autostart y crear un papelera/ Subdirectorio en el directorio del proyecto de la siguiente manera:

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

Crear un nuevo configuración.json Archivo en el directorio del proyecto /opt/vmware-autostart Con el siguiente comando:

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

El configuración.json El archivo mantiene una lista de VMware Workstation Pro 16 VMS que desea comenzar automáticamente el arranque.

Una entrada VMware Workstation Pro 16 VM tiene solo 3 propiedades.

  • nombre - El nombre de la máquina virtual
  • vmxpath - El camino absoluto hacia el .VMX Archivo de la máquina virtual
  • autoencendido - Un booleano. Si verdadero, La VM se iniciará automáticamente en el momento del arranque. Si FALSO, La VM no será administrada por el VMware AutoStart programa. Por lo tanto, no comenzará automáticamente en el momento del arranque.

Puedes encontrar el Nombre de la máquina virtual y vmxpath de la aplicación VMware Workstation Pro 16 como se marca en la captura de pantalla a continuación.

Ahora que conoce el formato del archivo de configuración, escribamos el VMware Programa AutoStart Usando el lenguaje de secuencias de comandos de shell bash.

Crear un nuevo script bash autoencendido en el /opt/vmware-autostart/bin directorio con el siguiente comando:

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

Escriba las siguientes líneas de códigos en el autoencendido guión de shell.

#!/bin/bash
msg_auto_answer_disable ()
hacer eco "inhabilitar msg.AutoAswer por $ vm_name "
sed -i.bak -s '/^msg \.autoanswer/d '"$ vmx_path"

msg_auto_answer_enable ()
echo "habilitando MSG.AutoAswer por $ vm_name "
echo 'msg.autoanSwer = "true" '>> "$ vmx_path"

start_vm ()
echo "$ vm_name está comenzando ..."
/usr/bin/vmrun -t ws inicio "$ vmx_path" Nogui 2>/dev/null && echo "$ vm_name iniciado."|| echo" $ vm_name no pudo comenzar."

suspend_vm ()
echo "$ vm_name está suspendiendo ..."
/usr/bin/vmrun -t ws suspender "$ vmx_path" duro 2>/dev/null && echo "$ vm_name suspendido."|| echo" $ vm_name no se suspendió."

config_file =/opt/vmware-autostart/config.json
num_vms = $ (JQ '.máquinas virtuales | longitud' < $config_file)
Action = "$ 1"
para ((contador = 0; contador < $num_vms; counter++))
hacer
vm_name = $ (jq -j ".VMS [$ contador].nombre" < $config_file)
VMX_PATH = $ (JQ -J ".VMS [$ contador].vmxpath " < $config_file)
VM_AUTOSTART = $ (JQ -J ".VMS [$ contador].autoencendido" < $config_file)
if ["$ acción" == "inicio" -a "$ vm_autostart" == "verdadero"]
entonces
msg_auto_answer_disable && msg_auto_answer_enable && start_vm
FI
if ["$ action" == "suspender" -a "$ vm_autostart" == "verdadero"]
entonces
msg_auto_answer_disable && suspend_vm
FI
hecho
Salir 0

El autoencendido Bash Script debe verse de la siguiente manera.

Una vez que haya terminado, presione + X seguido por Y y Para salvar el autoencendido Guión.

Aquí,

El msg_auto_answer_disable y msg_auto_answer_enable Las funciones se utilizan para eliminar y establecer el machista.respuesta automática opción en el .VMX Archivo de la VM, respectivamente.

Cuando machista.respuesta automática se establece en VERDADERO, VMware Workstation Pro 16 Las máquinas virtuales no esperarán las entradas del usuario. Si esto no está configurado, no podrá iniciar máquinas virtuales en segundo plano utilizando el autoencendido Script si requiere alguna interacción del usuario para comenzar.

El start_vm la función se utiliza para iniciar una máquina virtual utilizando el .VMX Archivo de la máquina virtual. También imprime los mensajes de registro necesarios en la pantalla.

El suspender_vm la función se utiliza para suspender una máquina virtual utilizando el .VMX Archivo de la máquina virtual. También imprime los mensajes de registro necesarios en la pantalla.

Algunas variables se definen en las líneas 23-25.

archivo de configuración - La ruta absoluta a la configuración.archivo json.

num_vms - Usos JQ para calcular el número de máquinas virtuales disponibles en el configuración.json archivo.

acción - El primer argumento de línea de comandos es la acción para realizar. El autoencendido El script lo usa para determinar si iniciar máquinas virtuales o suspender las máquinas virtuales.

Las líneas 27-42 se utilizan para atravesar todas las máquinas virtuales disponibles en el configuración.json archivo, habilitar/deshabilitar machista.respuesta automática Propiedad para cada máquina virtual e iniciar/suspender las máquinas virtuales.

En el bucle, las líneas 29-31 definen algunas variables.

VM_NAME - Usos JQ para obtener el nombre propiedad de la máquina virtual desde el configuración.json archivo.

VMX_PATH - Usos JQ para obtener el vmxpath propiedad de la máquina virtual desde el configuración.json archivo.

VM_AUTOSTART - Usos JQ para obtener el autoencendido propiedad de la máquina virtual desde el configuración.json archivo.

Si el valor de acción es START y VM_AUTOSTART (la propiedad AutoStart en configuración.json) es verdadero, elimina el machista.respuesta automática propiedad del .VMX archivo (si existe) de la máquina virtual, establecer machista.respuesta automática propiedad de VERDADERO en el .VMX archivo de la máquina virtual e iniciar la máquina virtual.

Si el valor de acción se suspende y vm_aUtastart (la propiedad AutoStart en configuración.json) es verdadero, elimina el msg.propiedad automática de la .archivo vmx suspender la máquina virtual.

Una vez que hayas creado el autoencendido Script bash, hágalo ejecutable con el siguiente comando:

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

Iniciar automáticamente el programa VMware AutoStart en arranque

En esta sección, crearé un servicio de sistema para que ejecute el autoencendido Script de BASH automáticamente en el momento de arranque.

Crea un nuevo archivo vmware-autostart.servicio En el directorio del proyecto /opt/vmware-autostart como sigue:

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

Escriba las siguientes líneas en el vmware-autostart.servicio archivo.

[Unidad]
Descripción = Inicie automáticamente la máquina virtual VMware
Después = red.objetivo VMware.servicio
Requiere = red.objetivo VMware.servicio
Conflictos = apagado.objetivo
Antes = apagado.objetivo múltiple.objetivo
[Servicio]
Tipo = onehot
Execstart =/opt/vmware-autostart/bin/autostart start
Execstop =/opt/vmware-autostart/bin/autoStartt Suspend
Reiniciar = no
PermanecerfterExit = sí
Usuario = Shovon
Grupo = pala
[Instalar]
Wantedby = Multi-user.objetivo

Una vez que haya terminado, presione + X seguido por Y y Para salvar el vmware-autostart.servicio archivo.

Aquí,

Exectard ejecuta el autoencendido guión con un comenzar Opción de línea de comandos en el momento del arranque. Entonces, todas las máquinas virtuales disponibles en el configuración.json El archivo se iniciará automáticamente en el arranque del sistema.

Execstop hace lo contrario. Dirige el autoencendido guión con el suspender opción de línea de comandos antes de cerrar o reiniciar la computadora. Entonces, todas las máquinas virtuales disponibles en el configuración.json El archivo se suspenderá en el apagado del sistema o reiniciará.

El autoencendido El script se ejecutará como usuario pala y grupo pala. Debe reemplazarlo con su inicio de sesión Usuario y primario Grupo nombre.

Puedes encontrar tu inicio de sesión Usuario y primario Grupo Nombre con el siguiente comando:

$ ID

Hacer un enlace simbólico del vmware-autostart.servicio archivo en el /etc/systemd/sistema Directorio de la siguiente manera:

$ sudo ln -s/opt/vmware-AUTOSTART/VMWARE-AUTOSTART.servicio/etc/systemd/system/vmware-autostart.servicio

Para que los cambios de Systemd entren en vigencia, ejecute el siguiente comando:

$ sudo SystemCtl-Daemon-Reload

Ahora, agregue el servicio Systemd vmware-autostart.servicio al inicio del sistema para comenzar automáticamente en el momento de arranque.

$ sudo SystemCTL Habilitar VMware-AutostArt.servicio

Prueba del programa VMware AutoStartt

Para verificar si el programa funciona como se esperaba, debe reiniciar su computadora. Antes de hacer eso, asegúrese de agregar las máquinas virtuales que desea comenzar automáticamente en el arranque en el /opt/vmware-autostart/config.json archivo.

Agregaré el Ubuntu-desktop-1 y trabajaré en las máquinas virtuales de PC 1 en el/opt/vmware-autostart/config.archivo json para la demostración.

Una vez que haya terminado, reinicie su computadora con el siguiente comando:

$ sudo reinicio

Una vez que su computadora arranca, debería ver que el servicio Systemd vmware-autostart.servicio es activo.

$ sudo systemctl status vmware-autostart.servicio

Desde los registros de Systemd, puede ver que las máquinas virtuales Ubuntu-desktop-1 y PC de trabajo 1 Comenzó automáticamente bien.

Para confirmar que VMware Workstation Pro 16 VMS comenzó automáticamente en el arranque, ejecute el siguiente comando:

Lista de $ vmrun

Como puede ver, las máquinas virtuales VMware Workstation Pro 16 se están ejecutando bien.

También puede verificar que las máquinas virtuales se están ejecutando desde la aplicación VMware Workstation Pro 16, como puede ver en la captura de pantalla a continuación.

Para probar si las máquinas virtuales se suspenderán cuando apague o reinicie su computadora, abra una de las máquinas virtuales que ha configurado para autostart e inicia cualquier aplicación.

Cierre la aplicación VMware Workstation Pro 16 mientras la VM se ejecuta.

Haga clic en Ejecutar en segundo plano como se marca en la captura de pantalla a continuación.

Ahora, reinicie su computadora con el siguiente comando:

$ sudo reinicio

Una vez que su computadora arranca, abra la aplicación VMware Workstation Pro 16, y debe ver que la VM está en el mismo estado que la última vez (recuperada del estado suspendido).

Problemas conocidos

Mantenga una máquina virtual abierta en la aplicación VMware Workstation Pro 16. El VMware AutoStart El programa no podrá suspender la máquina virtual cuando cierre o reinicie su computadora mientras mantiene abierta la aplicación VMware Workstation Pro 16. Puede ser raro que las personas cierren o reinicien su computadora mientras mantienen los programas abiertos. Pero el programa podría mejorarse para garantizar que la aplicación VMware Workstation Pro 16 esté cerrada antes de suspender las máquinas virtuales.

Repositorio de Github

El programa VMware AutoStarSt demostrado en este artículo también está disponible en GitHub. Puede clonar el repositorio de GitHub (Shovon8/VMware-Autostart) de este programa para ahorrar algo de escritura.

Enlace de Github: https: // github.com/shovon8/vmware-autostart

Conclusión

Este artículo te muestra cómo escribir un VMware AutoStart Programa para iniciar automáticamente las máquinas virtuales de VMware Workstation Pro 16 en el arranque y suspenderlas antes de que el sistema apague o reinicielas.

Referencias

[1] VMware - Aplicación de línea de comandos

[2] Uso de VMRUN para controlar máquinas virtuales

[3] Conte JSON Array Elements con JQ - phpfog.comunicarse

[4] Cómo eliminar las cotizaciones de los resultados? · Problema #1735 · STEDOLAN/JQ · GITHUB