Como automatizar um VMware Workstation Pro top 10 Máquina virtual no Linux

Como automatizar um VMware Workstation Pro top 10 Máquina virtual no Linux
Antes do VMware Workstation Pro 16, você pode usar automaticamente o recurso VM compartilhado para iniciar máquinas virtuais no momento da inicialização. Vmware workstation pro 16 deprecia o VM compartilhado recurso. Embora você ainda possa usá -lo, provavelmente será descartado na próxima versão do VMware Workstation Pro.

Neste artigo, mostrarei como escrever um VMware AutoStart Programa usando a linguagem Bash Shell Script e configure o Systemd para iniciar o VMware WorkStation Pro 16 Máquinas virtuais na inicialização automaticamente. Dessa forma, você ainda terá um plano de backup quando o VMware Workstation Pro derrubar o VM compartilhado recurso para sempre. Então vamos começar.

Índice

  1. Introdução ao programa VMware AutoStart
  2. Instalando as dependências necessárias
  3. Escrevendo o programa VMware AutoStart
  4. Iniciando automaticamente o programa VMware AutoStart na inicialização
  5. Testando o programa VMware AutoStart
  6. Questões conhecidas
  7. Repositório do GitHub
  8. Conclusão
  9. Referências

Introdução ao programa VMware AutoStart

O principal objetivo do VMware AutoStart programa:

1) Leia um arquivo de configuração que consiste em todas as VMs VMware Workstation Pro 16 que você gostaria de começar no tempo de inicialização automaticamente.

2) Inicie automaticamente as VMs configuradas na hora da inicialização e suspenda -as antes do desligamento ou reiniciação do sistema.

Para conseguir isso, eu criei,

1) Um arquivo de configuração da VM central Config.JSON.

2) um script de shell de festa começo automático. Ele lerá o arquivo de configuração Config.JSON Para determinar as VMs para gerenciar. Ele iniciará ou suspenderá as VMs configuradas, dependendo do argumento da linha de comando fornecido ao script do shell em tempo de execução.

3) um arquivo de unidade Systemd VMware-Autostart.serviço. Ele executará automaticamente o script Bash começo automático Para iniciar todas as VMs configuradas no tempo de inicialização. Ele também executará o script de bash começo automático para suspender as VMs configuradas antes do desligar o sistema ou reiniciar.

Instalando as dependências necessárias

Eu usei um arquivo json Config.JSON para armazenar a configuração da VMware VM que o VMware AutoStart o programa usará para determinar as máquinas virtuais para serem automaticamente na inicialização.

Para analisar o arquivo de configuração JSON do script Bash Shell do programa VMware AutoStart, eu usei o JQ comando.

No Ubuntu, Debian, Linux Mint, KDE Neon e outras distribuições de Linux baseadas em Debian; você pode instalar JQ com o seguinte comando:

$ sudo apt install jq -y

No CentOS 8/RHEL 8, você pode instalar JQ com o seguinte comando:

$ sudo dnf install jq -y

Uma vez JQ está instalado, execute o seguinte comando para ver se JQ é acessível a partir do terminal.

$ jq --version

Escrevendo o programa VMware AutoStart

Esta seção mostrará como escrever o VMware AutoStart programar e explicar como funciona.

Primeiro, crie um novo diretório de projeto /opt/VMware-Autostart e crie a bin/ subdiretório no diretório do projeto da seguinte forma:

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

Crie um novo Config.JSON arquivo no diretório do projeto /opt/VMware-Autostart com o seguinte comando:

$ sudo nano/opt/vmware-autostart/configuração.JSON

O Config.JSON O arquivo mantém uma lista de VMware WorkStation Pro 16 VMs que você gostaria de iniciar automaticamente.

Uma entrada VMware Workstation Pro 16 VM tem apenas 3 propriedades.

  • nome - O nome da máquina virtual
  • VMXPath - O caminho absoluto para o .VMX arquivo da máquina virtual
  • começo automático - Um booleano. Se verdadeiro, A VM será iniciada automaticamente na hora da inicialização. Se falso, A VM não será gerenciada pelo VMware AutoStart programa. Então, não começará automaticamente na hora da inicialização.

Você pode encontrar o Nome da máquina virtual e VMXPath Do aplicativo VMware Workstation Pro 16, conforme marcado na captura de tela abaixo.

Agora que você conhece o formato do arquivo de configuração, vamos escrever o VMware Programa AutoStart Usando a linguagem de script de shell bash.

Crie um novo script Bash começo automático no /opt/vmware-autostart/bin Diretório com o seguinte comando:

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

Digite as seguintes linhas de códigos no começo automático script de shell.

#!/BIN/BASH
msg_auto_answer_disable ()
eco "desativando msg.Autoanswer para $ vm_name "
sed -i.bak -s '/^msg \.Autoanswer/d '"$ vmx_path"

msg_auto_answer_enable ()
eco "habilitando msg.Autoanswer para $ vm_name "
eco 'msg.autoanswer = "true" '>> "$ vmx_path"

start_vm ()
eco "$ vm_name está começando ..."
/usr/bin/vmrun -t ws start "$ vmx_path" nogui 2>/dev/null && echo "$ vm_name iniciado."|| echo" $ vm_name."

suspense_vm ()
eco "$ vm_name está suspendendo ..."
/usr/bin/vmrun -t ws suspender "$ vmx_path" hard 2>/dev/null && echo "$ vm_name suspenso."|| echo" $ vm_name falhou em suspender."

config_file =/opt/vmware-autostart/config.JSON
NUM_VMS = $ (JQ '.vm | comprimento' < $config_file)
ação = "$ 1"
para ((contador = 0; contador < $num_vms; counter++))
fazer
vm_name = $ (jq -j ".VMs [$ contador].nome" < $config_file)
vmx_path = $ (jq -j ".VMs [$ contador].vmxpath " < $config_file)
vm_autostart = $ (jq -j ".VMs [$ contador].começo automático" < $config_file)
se ["$ ação" == "start" -a "$ vm_autostart" == "true"]
então
msg_auto_answer_disable && msg_auto_answer_enable && start_vm
fi
Se ["$ Action" == "suspender" -a "$ vm_autostart" == "true"]
então
msg_auto_answer_disable && suspend_vm
fi
feito
saída 0

O começo automático O script bash deve parecer o seguinte.

Depois de terminar, pressione + X seguido pela Y e Para salvar o começo automático Script Bash.

Aqui,

O msg_auto_answer_disable e msg_auto_answer_enable funções são usadas para remover e definir o msg.resposta automática opção no .VMX arquivo da VM, respectivamente.

Quando msg.resposta automática está configurado para verdadeiro, Máquinas virtuais VMware Workstation Pro 16 não esperam por nenhuma entrada do usuário. Se isso não estiver definido, você não poderá iniciar máquinas virtuais em segundo plano usando o começo automático script se exigir qualquer interação do usuário para iniciar.

O start_vm A função é usada para iniciar uma máquina virtual usando o .VMX arquivo da máquina virtual. Ele também imprime as mensagens de log necessárias para a tela.

O suspense_vm A função é usada para suspender uma máquina virtual usando o .VMX arquivo da máquina virtual. Ele também imprime as mensagens de log necessárias para a tela.

Algumas variáveis ​​são definidas nas linhas 23-25.

config_file - O caminho absoluto para a configuração.arquivo json.

NUM_VMS - Usos JQ Para calcular o número de VMs disponíveis no Config.JSON arquivo.

Ação - O primeiro argumento da linha de comando é a ação para executar. O começo automático O script o usa para determinar se deve iniciar VMs ou suspender VMs.

As linhas 27-42 são usadas para percorrer todas as máquinas virtuais disponíveis no Config.JSON arquivo, ativar/desativar msg.resposta automática propriedade para cada máquina virtual e iniciar/suspender as máquinas virtuais.

No loop, as linhas 29-31 definem algumas variáveis.

vm_name - Usos JQ para obter o nome propriedade da máquina virtual do Config.JSON arquivo.

vmx_path - Usos JQ para obter o VMXPath propriedade da máquina virtual do Config.JSON arquivo.

vm_autostart - Usos JQ para obter o começo automático propriedade da máquina virtual do Config.JSON arquivo.

Se o valor da ação for inicial.JSON) é verdadeiro, remova o msg.resposta automática propriedade do .VMX arquivo (se existe) da máquina virtual, defina msg.resposta automática propriedade para verdadeiro no .VMX arquivo da máquina virtual e inicie a máquina virtual.

Se o valor da ação for suspenso e vm_autostart (a propriedade AutoStart em Config.JSON) é verdadeiro, remova o MSG.propriedade de automóveis de automóveis da .Arquivo VMX suspende a máquina virtual.

Depois de criar o começo automático Bash Script, faça -o executável com o seguinte comando:

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

Iniciando automaticamente o programa VMware AutoStart na inicialização

Nesta seção, criarei um serviço de sistema para que ele execute o começo automático Bash Script automaticamente na hora da inicialização.

Crie um novo arquivo VMware-Autostart.serviço No diretório do projeto /opt/VMware-Autostart do seguinte modo:

$ sudo nano/opt/vmware-autostart/vmware-aUSTART.serviço

Digite as seguintes linhas no VMware-Autostart.serviço arquivo.

[Unidade]
Descrição = Iniciar automaticamente VMware Virtual Machine
Depois = rede.Alvo VMware.serviço
Requer = rede.Alvo VMware.serviço
Conflitos = desligamento.alvo
Antes = desligamento.MultiUser alvo.alvo
[Serviço]
Tipo = OneShot
Execstart =/opt/vmware-autostart/bin/automático inicial
Execstop =/opt/vmware-autostart/bin/autostart suspender
Reiniciar = não
Permaneceftexit = sim
Usuário = Shovon
Grupo = Shovon
[Instalar]
WantedBy = MultiUser.alvo

Depois de terminar, pressione + X seguido pela Y e Para salvar o VMware-Autostart.serviço arquivo.

Aqui,

Exectart executa o começo automático script com um começar Opção de linha de comando na hora da inicialização. Então, todas as máquinas virtuais disponíveis no Config.JSON O arquivo será iniciado automaticamente na inicialização do sistema.

Execstop faz o oposto. Ele executa o começo automático script com o suspender Opção de linha de comando antes de desligar ou reiniciar o computador. Então, todas as máquinas virtuais disponíveis no Config.JSON O arquivo será suspenso no desligamento ou reinício do sistema.

O começo automático O script será executado como usuário Shovon e grupo Shovon. Você deve substituí -lo por seu login Do utilizador e primário Grupo nome.

Você pode encontrar seu login Do utilizador e primário Grupo Nome com o seguinte comando:

$ id

Fazer um vínculo simbólico do VMware-Autostart.serviço arquivo no /etc/Systemd/System diretório da seguinte maneira:

$ sudo ln -s/opt/vmware-autostart/vmware-autostart.Serviço/etc/Systemd/System/VMware-Autostart.serviço

Para que as mudanças do Systemd entrem em vigor, execute o seguinte comando:

$ sudo systemctl daemon -load

Agora, adicione o serviço Systemd VMware-Autostart.serviço para a inicialização do sistema para começar automaticamente na hora de inicialização.

$ sudo systemctl Ativar VMware-Autostart.serviço

Testando o programa VMware AutoStart

Para verificar se o programa funciona conforme o esperado, você deve reiniciar seu computador. Antes de fazer isso, adicione as VMs que você deseja iniciar automaticamente na inicialização no /opt/vmware-autostart/config.JSON arquivo.

Vou adicionar o ubuntu-desktop-1 e o trabalho PC 1 VMs no/opt/vmware-autostart/config.arquivo json para a demonstração.

Depois de terminar, reinicie o computador com o seguinte comando:

$ sudo reiniciar

Uma vez que o seu computador botas, você verá que o serviço Systemd VMware-Autostart.serviço é ativo.

$ sudo Systemctl Status VMware-Autostart.serviço

A partir dos logs do Systemd, você pode ver que as VMs Ubuntu-desktop-1 e Trabalho PC 1 Comecei automaticamente bem.

Para confirmar que o VMware Workstation Pro 16 VMs começou automaticamente na inicialização, execute o seguinte comando:

Lista de $ vmrun

Como você pode ver, o VMware Workstation Pro 16 VMs está funcionando bem.

Você também pode verificar se as VMs estão funcionando do aplicativo VMware Workstation Pro 16, como você pode ver na captura de tela abaixo.

Para testar se as VMs serão suspensas quando você desligar ou reiniciar o computador, abra uma das VMs que você configurou para o AutoStart e inicie qualquer aplicativo.

Feche o aplicativo VMware WorkStation Pro 16 enquanto a VM está em execução.

Clique em Executado em segundo plano conforme marcado na captura de tela abaixo.

Agora, reinicie seu computador com o seguinte comando:

$ sudo reiniciar

Depois que o seu computador inicializa, abra o aplicativo VMware Workstation Pro 16 e você verá que a VM está no mesmo estado da última vez (recuperado do estado suspenso).

Questões conhecidas

Mantenha uma máquina virtual aberta no aplicativo VMware Workstation Pro 16. O VMware AutoStart O programa não poderá suspender a máquina virtual quando você desligar ou reiniciar o computador enquanto mantém o aplicativo VMware Workstation Pro 16 aberto. Pode ser raro as pessoas desligarem ou reiniciarem o computador enquanto mantêm os programas abertos. Mas o programa pode ser melhorado para garantir que o aplicativo VMware Workstation Pro 16 seja fechado antes de suspender as máquinas virtuais.

Repositório do GitHub

O programa VMware AutoStart demonstrado neste artigo também está disponível no GitHub. Você pode clone.

Github Link: https: // github.com/Shovon8/VMware-Autostart

Conclusão

Este artigo mostra como escrever um VMware AutoStart Programa para iniciar automaticamente o VMware WorkStation Pro 16 Máquinas virtuais na inicialização e suspenda -as antes do desligamento ou reinicialização do sistema.

Referências

[1] VMware - Aplicativo da linha de comando

[2] Usando o VMRUN para controlar máquinas virtuais

[3] Count JSON Array Elements com JQ - Phpfog.com

[4] Como remover citações dos resultados? · Edição #1735 · Stedolan/jq · github