Open lucaslehnen opened 3 years ago
Achei a possibilidade de utilizar o ESXI para a emulação das máquinas dentro do Qemu. Isso pode trazer a possibilidade mais clara de reaproveitar o conhecimento e arquivos de irei construir futuramente, mesmo que a performance seja inferior, já que estarei com um um ambiente triplamente virtualizado: Qemu -> ESXI -> VM
Apesar de termos recursos de Packer e Terraform para automatizar a criação da VM com ESXI no libvirt, como eu já tenho uma automação no Ansible, para mim faz mais sentido que essa parte também fique nele. Terraform e Packer, ainda sim seguem para serem utilizados conforme planejado, nas vms do kubernetes, que agora serão executadas no ESXI.
Apesar de termos recursos de Packer e Terraform para automatizar a criação da VM com ESXI no libvirt, como eu já tenho uma automação no Ansible, para mim faz mais sentido que essa parte também fique nele. Terraform e Packer, ainda sim seguem para serem utilizados conforme planejado, nas vms do kubernetes, que agora serão executadas no ESXI.
O Packer ainda utilizei para criar a imagem do ESXi via builder do Qemu, pois seria mais fácil para servir o arquivo de kickstart. Uma possível alternativa seria fazer na mão uma customização da imagem de instalação, mas isso daria mais trabalho e precisaria subir mais recursos temporários no ambiente.
O Terraform também avaliei a utilização, mas como não consegui conectar remotamente no qemu e são poucas opções no provider, resolve não utiliza-lo. https://registry.terraform.io/providers/dmacvicar/libvirt/latest/docs
Decidi montar um único Playbook Ansible para provisionamento do Homelab. Apesar de usar outras ferramentas, como executar o Terraform para criação da infra na nuvem, tudo vai partir deste playbook, de uma role específica
Li muito sobre como Qemu, libvirt e afins, fiz vários testes, tentei rodar o ESXI nestes virtualizadores mas não tive sucesso, o hardware virtual é incompatível. Ai fui para uma solução menos glamurosa: Coloquei o Debian com o LXDE (usa uns 300 MB de ram), e instalei manualmente o VMWare Workstation Player. Este sim tem o suporte adequado, inclusive já reconhece ao colocar a ISO. Notei também que ficou mais rápido.
O código que escrevi do Packer para o libvirt e virtualbox irei separar em outros repositórios e evoluir em outro momento futuro.
Estudando mais, cheguei em dois cenários:
1º - Debian >> VMWare Workstation >> ESXi:
Neste caso, o Ansible faria as seguintes alterações na máquina com o Debian:
Obs.: O VMWare Player não tem os complementos para acesso programático exigidos pelo Packer. Pode ser utilizado ele, mas o ESXi teria de ser instalado manualmente, como já havia comentado acima.
2º - Debian >> Qemu
Neste cenário, o Ansible faria:
Para acelerar o aprendizado do Kubernetes, e subir logo esse ambiente, vou focar no cenário 2, mas manterei o código referente ao cenário 1 para continuar evoluindo nele posteriormente.
Por hora deixei o Packer buildando localmente a partir de script no repositório e fazendo o upload da imagem para o S3. No playbook do desktop, coloquei para baixar estes discos pré-gerados, diferente da ideia original, onde eu construiria eles pelo playbook. A ideia depois, é por em CI/CD https://github.com/lucaslehnen/homelab/issues/56
Problema:
Preciso configurar máquinas virtuais para utilizar no ambiente. Instalei um Debian no meu PC desktop.
Proposta
A ideia inicial é utilizar o libvirt/qemu para rodar as máquinas virtuais.
Detalhes
Pode ser automatizado com Terraform ou Ansible. Como eu preciso configurar o host físico de virtualização, que é uma máquina já instalada mas sem pacote algum, eu posso usar o Ansible como primeira etapa para instalar o libvirt e configurar a máquina e na sequência o Terraform para provisionar as vms com libvirt. O Ansible também tem o módulo do libvirt, mas acredito que seja uma oportunidade de já encaixar o Terraform. Da pra usar o Packer para montar imagens customizadas também.
Um fluxo possível seria:
Neste cenário, seria um teste de trabalho com o conceito de imutabilidade.
Tarefas