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
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 -yEn Centos 8/Rhel 8, puede instalar JQ Con el siguiente comando:
$ sudo dnf install jq -yUna vez JQ está instalado, ejecute el siguiente comando para ver si JQ es accesible desde la terminal.
$ JQ -VersiónEscribir 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/binCrear un nuevo configuración.json Archivo en el directorio del proyecto /opt/vmware-autostart Con el siguiente comando:
$ sudo nano/opt/vmware-autostart/config.jsonEl 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.
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/autostArtEscriba las siguientes líneas de códigos en el autoencendido guión de shell.
#!/bin/bashEl 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/autostArtIniciar 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.servicioEscriba las siguientes líneas en el vmware-autostart.servicio archivo.
[Unidad]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:
$ IDHacer 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.servicioPara que los cambios de Systemd entren en vigencia, ejecute el siguiente comando:
$ sudo SystemCtl-Daemon-ReloadAhora, 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.servicioPrueba 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 reinicioUna vez que su computadora arranca, debería ver que el servicio Systemd vmware-autostart.servicio es activo.
$ sudo systemctl status vmware-autostart.servicioDesde 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 $ vmrunComo 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 reinicioUna 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