Quem possui home lab VMware Bare-Metal, sabe que é muito frequente a reinstalação do seus hosts VMware ESXi, seja porque experimentamos versões novas do VMware ESXi, seja porque em algum dos testes em nosso home lab ocorreu falha e precisamos começar o ambiente do zero.
Ainda que a instalação do VMware ESXi seja rápido, é necessário intervenção humana para as configurações de rede, hostname, habilitar ssh, enfim… Essa intervenção repetidas vezes se torna chato, então eu pesquisei uma forma de automatizar esse processo e ganhar mais agilidade na hora de reinstalar meus hosts VMware ESXi.
Abaixo segue um tutorial de como automatizar a reinstalação do VMware ESXi utilizando apenas um simples pendrive e um script ESXi Kickstart, tudo isso sem utilizar nenhuma ferramenta de terceiros, mas sim configurações nativas da VMware.
Após realizar os passos abaixo, você simplesmente vai inserir seu pendrive no seu host, definir na sequência de boot e aguardar a mágica acontecer.
Automatizando a instalação do VMware ESXi
Passo 1: Criando um pendrive bootável do VMware ESXi
Para este passo, eu recomendo ler o artigo que escrevi anteriormente AQUI que ensina a criar um pendrive bootável do VMware ESXi para aqueles que utilizam MacOS. Para quem utiliza Windows, recomendo uma rápida pesquisa no Google que certamente haverá milhares de tutoriais a esse respeito, por se tratar de um processo simples, não irei detalhar aqui. Pretendo focar apenas nos passos posteriores a seguir abaixo.
Passo 2: Editando o BOOT.CFG
O arquivo “BOOT.CFG” é um arquivo de configuração encontrado na imagem de instalação do VMware ESXi, contém informações de configuração relacionadas à inicialização e à instalação do ESXi, carregamento do kernel, etc… Durante a instalação, ele determina as opções disponíveis para o usuário e pode ser personalizado para automatizar o processo.
Para este tutorial, iremos realizar apenas uma alteração nele, que se trata de informar a localização do script ESXi Kickstart que ele vai consultar. Para isso, basta abrir o arquivo BOOT.CFG usando o editor de código de sua preferência e alterar:
de: kernelopt=cdromBoot runweasel
para: kernelopt=ks=usb:/KS.CFG
Abaixo segue como o BOOT.CFG deve ficar, com a alteração informada.
Estou utilizando a imagem do VMware ESXi 8U2:
bootstate=0 title=Loading ESXi installer timeout=5 prefix= kernel=/b.b00 kernelopt=ks=usb:/KS.CFG modules=/jumpstrt.gz --- /useropts.gz --- /features.gz --- /k.b00 --- /uc_intel.b00 --- /uc_amd.b00 --- /uc_hygon.b00 --- /procfs.b00 --- /vmx.v00 --- /vim.v00 --- /tpm.v00 --- /sb.v00 --- /s.v00 --- /atlantic.v00 --- /bcm_mpi3.v00 --- /bnxtnet.v00 --- /bnxtroce.v00 --- /brcmfcoe.v00 --- /cndi_igc.v00 --- /dwi2c.v00 --- /elxiscsi.v00 --- /elxnet.v00 --- /i40en.v00 --- /iavmd.v00 --- /icen.v00 --- /igbn.v00 --- /intelgpi.v00 --- /ionic_cl.v00 --- /ionic_en.v00 --- /irdman.v00 --- /iser.v00 --- /ixgben.v00 --- /lpfc.v00 --- /lpnic.v00 --- /lsi_mr3.v00 --- /lsi_msgp.v00 --- /lsi_msgp.v01 --- /lsi_msgp.v02 --- /mtip32xx.v00 --- /ne1000.v00 --- /nenic.v00 --- /nfnic.v00 --- /nhpsa.v00 --- /nipmi.v00 --- /nmlx5_cc.v00 --- /nmlx5_co.v00 --- /nmlx5_rd.v00 --- /ntg3.v00 --- /nvme_pci.v00 --- /nvmerdma.v00 --- /nvmetcp.v00 --- /nvmxnet3.v00 --- /nvmxnet3.v01 --- /pvscsi.v00 --- /qcnic.v00 --- /qedentv.v00 --- /qedrntv.v00 --- /qfle3.v00 --- /qfle3f.v00 --- /qfle3i.v00 --- /qflge.v00 --- /rdmahl.v00 --- /rste.v00 --- /sfvmk.v00 --- /smartpqi.v00 --- /vmkata.v00 --- /vmksdhci.v00 --- /vmkusb.v00 --- /vmw_ahci.v00 --- /bmcal.v00 --- /clusters.v00 --- /crx.v00 --- /drivervm.v00 --- /elx_esx_.v00 --- /btldr.v00 --- /esx_dvfi.v00 --- /esx_ui.v00 --- /esxupdt.v00 --- /tpmesxup.v00 --- /weaselin.v00 --- /esxio_co.v00 --- /infravis.v00 --- /loadesx.v00 --- /lsuv2_hp.v00 --- /lsuv2_in.v00 --- /lsuv2_ls.v00 --- /lsuv2_nv.v00 --- /lsuv2_oe.v00 --- /lsuv2_oe.v01 --- /lsuv2_sm.v00 --- /native_m.v00 --- /qlnative.v00 --- /trx.v00 --- /vdfs.v00 --- /vds_vsip.v00 --- /vmware_e.v00 --- /hbrsrv.v00 --- /vsan.v00 --- /vsanheal.v00 --- /vsanmgmt.v00 --- /tools.t00 --- /xorg.v00 --- /gc.v00 --- /imgdb.tgz --- /basemisc.tgz --- /resvibs.tgz --- /esxiodpt.tgz --- /imgpayld.tgz build=8.0.2-0.0.22380479 updated=0
Fazendo isso, estamos orientando o instalador do ESXi ao invés de iniciar o assistente padrão de instalação, que ele utilize o script ESXi Kickstart que está localizado na raiz do pendrive, arquivo esse que iremos criar no próximo passo. Nesse arquivo conterá todas as instruções automatizadas para a instalação.
Vale ressaltar que o arquivo BOOT.CFG está localizado na raiz do pendrive e também em EFI/BOOT/BOOT.CFG, a alteração deverá ser realizada em ambos.
Passo 3: Criando script ESXi Kickstart KS.CFG
É no KS.CFG que a magia acontece, pois ele é como um arquivo de resposta, na qual inserimos nele todas as configurações que desejamos implantar na instalação do VMware ESXi. Para criar ele, basta você novamente usar o editor de código de sua preferência e criar o arquivo KS.CFG na raiz do seu pendrive e em seguida, rechear de configurações.
Essas configurações certamente variam de acordo com as suas escolhas e devices que compõem seu host, abaixo vou deixar o arquivo que eu estou utilizando como inspiração para você.
# ESXi Kickstart da VMBeans para VMware ESXi 8 # Leandro Franklin # https://leandrofranklin.net ######################################### #FASE 01 (referente à instalação) ### Aceitar o VMware End User License Agreement vmaccepteula ### Definição do local de instalaçao: SSD Kingston de 240GB install --disk=/vmfs/devices/disks/t10.ATA_____KINGSTON_SA400S37240G___________________50026B7282E8CBCC____ --overwritevmfs --novmfsondisk --ignoreprereqwarnings --ignoreprereqerrors --forceunsupportedinstall ### Definição de layout do teclado keyboard "Brazilian" ### Definição da senha de root password para DCUI e Tech Support rootpw 'P@$$w0rd' ### Definição das configurações de rede network --bootproto=static --device=vmnic1 --ip=192.168.68.143 --netmask=255.255.255.0 --gateway=192.168.68.1 --hostname=esxi03 --nameserver=192.168.68.144 --addvmportgroup=1 ### Reiniciar após a conclusão reboot #FASE 02 (referente ao primeiro boot) %firstboot --interpreter=busybox ### Configurar o dominio esxcli network ip dns search add --domain=vmbeans.local ### Adicionando a segunda vmnic ao vSwitch0 esxcli network vswitch standard uplink add --uplink-name=vmnic2 --vswitch-name=vSwitch0 ### Habilitar e iniciar SSH vim-cmd hostsvc/enable_ssh vim-cmd hostsvc/start_ssh ### Habilitar e iniciar ESXi Shell vim-cmd hostsvc/enable_esx_shell vim-cmd hostsvc/start_esx_shell ### Suprimir aviso do ESXi Shell esxcli system settings advanced set -o /UserVars/SuppressShellWarning -i 1 ### Desabilitar o suporte à IPv6 (obrigatório reiniciar) esxcli network ip set --ipv6-enabled=false ### Reiniciar reboot now
Explicando o ESXi Kickstart
Embora eu tenha deixado o script o mais explicativo possível com os comentários contidos nele, eu imagino que ainda possam surgir algumas duvidas referente aos parâmetros usados, vou tentar esclarecê-los abaixo, mas antes disso, devo informar que consultei no artigo oficial da VMware AQUI. Recomendo também que você acesse esse link para maiores esclarecimentos e se necessário, adicionar outros parâmetros que eu não esteja usando.
O script ESXi Kickstart é dividido em 02 fases, sendo que a primeira fase é composta exclusivamente dos passos que somos questionados na instalação padrão do VMware ESXi e a segunda fase são comandos que serão executados após a instalação ter sido concluída, porém esses comandos são executados uma única vez no primeiro boot do seu host.
Na fase 02 percebam que eu estou definindo a mídia em que o VMware ESXi será instalado utilizando o path completo da mídia em que será instalado, no meu caso é um SSD de 240Gb da Kingston. Com certeza o nome da mídia não será igual em nenhum host, se atentem a isso. Existem outras formas de selecionar o disco, como no meu caso eu possuo outros discos que serão usado no cluster vSAN, eu achei melhor apontar explicitamente onde eu quero que o VMware ESXi seja instalado.
Também informo que sobrescreva a partição do disco, caso ela já tenha VMFS (cuidado, saiba que você perderá todos os dados que existir nesse disco), assim como também não formate o disco, ou seja, você não visualizará o “datastore1” no item Storage do ESXi. Gosto dessa opção, pois assim nenhum datastore local irá aparecer quando voce for executar o vMotion de forma manual no VMware vCenter.
Uma novidade do ESXi Kickstart do vSphere 8 foi a presença dos parâmetros –ignoreprereqwarnings –ignoreprereqerrors –forceunsupportedinstall que fazem que o instalador ignore os alertas e erros de devices que possam não ser suportados oficialmente no vSphere 8. No meu caso, preciso usar estes parâmetros pois meu processador Intel Xeon E5 2697 v2 2.7GHz entra nessa categoria, mas felizmente no caso dele, posso sobrescrever e ignorar isso.
Sobre as configurações de rede, está bem explicito, porém gostaria de comentar essa opção de decidir qual vmnic quero que seja adicionada no vSwitch0 já na instalação, ajuda demais.
Na fase 02, vejam que eu adicionei um passo para adicionar minha segunda vmnic ao vSwitch0, pois não consegui inserir as duas na fase 01. Um ponto importante é que o comando de reiniciar no final, só é obrigatório devido a desativação do IPv6, caso você pretenda utilizar IPv6, basta retirar a linha do restart.
Percebam a execução do arquivo kickstart.py que contem os comandos que inserimos no KS.CFG:
Conclusão
Se você deseja estar automatizando a instalação do VMware ESXi e ganhar tempo no seu laboratório, basta seguir o passo-a-passo acima. Claro que neste artigo estou me referindo ao meu cenário de home lab, de acordo com as configurações dos meus hosts.
Caso você tenha um ambiente de produção com vários hosts, pode usar este artigo como base para montar uma estrutura de boot pela rede utilizando boot PXE com o arquivo KS.CFG acessível pela rede, podendo utilizar qualquer um dos protocolos: NFS, HTTP, HTTPS, FTP. Cabe aqui sua imaginação!