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
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 -yNo CentOS 8/RHEL 8, você pode instalar JQ com o seguinte comando:
$ sudo dnf install jq -yUma vez JQ está instalado, execute o seguinte comando para ver se JQ é acessível a partir do terminal.
$ jq --versionEscrevendo 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/binCrie um novo Config.JSON arquivo no diretório do projeto /opt/VMware-Autostart com o seguinte comando:
$ sudo nano/opt/vmware-autostart/configuração.JSONO 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.
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/AutoStartDigite as seguintes linhas de códigos no começo automático script de shell.
#!/BIN/BASHO 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/AutoStartIniciando 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çoDigite as seguintes linhas no VMware-Autostart.serviço arquivo.
[Unidade]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:
$ idFazer 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çoPara que as mudanças do Systemd entrem em vigor, execute o seguinte comando:
$ sudo systemctl daemon -loadAgora, 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çoTestando 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 reiniciarUma vez que o seu computador botas, você verá que o serviço Systemd VMware-Autostart.serviço é ativo.
$ sudo Systemctl Status VMware-Autostart.serviçoA 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 $ vmrunComo 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 reiniciarDepois 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