Renomear Nodes no Proxmox VE
Recentemente configurei um servidor dedicado para rodar Proxmox e hospedar algumas aplicações para mim. É o primeiro que eu alugo, e na minha empolgação para começar a usá-lo, não pensei em renomear o servidor no Proxmox imediatamente. Eu assumi que havia uma configuração para isso em algum lugar e comecei a criar VMs e containers. A instalação foi fornecida pela empresa de aluguel, que realizou a imagem diretamente sem qualquer input de configuração, então o nome padrão atribuído foi `pvehost`. Pessoalmente, acho esse um nome entediante e pouco informativo. Se preciso usar nomes entediantes, prefiro que ao menos sejam descritivos.
Uma pesquisa rápida no Google não trouxe resultados sobre como fazer isso, a não ser que eu:
- Tivesse previsto e mudado o nome antes de adicionar guests, ou
- Fizesse backup de todos os guests, removesse-os, realizasse as alterações e depois restaurasse tudo.
Se pudesse fazer a opção 1, tenha certeza de que eu faria, e quem realmente tem tempo e paciência para a opção 2? Então, após algumas pesquisas, descobri que é possível renomear um node standalone com guests presentes. E é bem simples! Não há necessidade de mexer com backups e restaurações, reinstalar o Proxmox ou modificar arquivos em `/etc/pve`.
Descobri que o nome do host só precisa ser alterado em três lugares: `/etc/hosts`, `/etc/hostname` e em um arquivo de configuração do Proxmox: `/var/lib/pve-cluster/config.db`. Felizmente, este é apenas um banco de dados SQLite, e o nome do host está armazenado em um único registro. Você só precisará de um editor de texto e uma maneira de executar uma única consulta contra o arquivo de configuração para alterar o nome do node. Aqui está o que funcionou para mim (e claro, tudo deve ser feito como root ou via `sudo`).
Não garanto que isso funcionará para você e não me responsabilizo se isso quebrar seu servidor de produção, destruir seus guests ou causar um incêndio no servidor. Prossiga por sua própria conta e risco.
No entanto, o processo pode ser um pouco menos arriscado. Incluí instruções detalhadas para ajudar a mitigar alguns dos riscos. Testei isso na versão 8.2.7 do PVE, e não tenho certeza se funciona em outras versões.
A Mágica
Antes de começar, certifique-se de ter um meio alternativo de acesso. Como outros mencionaram, se você estiver fazendo essas mudanças via shell web, quase certamente será desconectado. Acesso via SSH ou console é imprescindível, e ter contas adicionais que possam usar `su` para root é altamente recomendado.
Pare os serviços `pve-cluster` e `pvestatd`:
systemctl stop pve-cluster ; systemctl stop pvestatd
Podem haver alterações não confirmadas no banco de dados, então é melhor forçar qualquer mudança pendente a ser gravada antes de prosseguir.
Faça um backup do banco de dados de configuração:
cp /var/lib/pve-cluster/config.db ~
Claro, isso não precisa ir necessariamente para sua pasta home. Apenas copie para um lugar seguro.
Se você já tentou mudar o nome do host modificando arquivos em `/etc/pve`, verifique o conteúdo de `/etc/pve/nodes`. Se você não vir nenhum diretório além do hostname atual do node é porque ainda não existe nenhum além do atual.
Inicie `pve-cluster` e `pvestatd` novamente:
systemctl start pve-cluster ; systemctl start pvestatd
Isso é necessário para a próxima alteração, já que é a maneira mais fácil de desfazer a maioria das mudanças feitas anteriormente em `/etc/pve`, enquanto o sistema de arquivos FUSE que expõe a configuração está montado.
Exclua quaisquer diretórios em `/etc/pve/nodes` além do diretório para seu hostname atual. Nota: este é um passo CRÍTICO, pois a criação de diretórios altera o banco de dados de configuração via um sistema de arquivos FUSE. Se você já tem um diretório com o novo hostname, isso fará com que o Proxmox falhe ao iniciar, e o banco de dados precisaria ser corrigido.
Se cometer um erro aqui, apenas restaure o banco de dados de configuração do passo 2 e tente novamente.
Pare `pve-cluster` e `pvstatd` novamente.novamente
systemctl stop pve-cluster ; systemctl stop pvestatd
Edite o hostname em "/etc/hosts"
nano /etc/hosts
Edite "/etc/hostname"
nano /etc/hostname
Instalando o sqlite
apt install sqlite3
Use uma ferramenta SQLite para abrir o banco de dados de configuração.
sqlite3 /var/lib/pve-cluster/config.db
Execute a seguinte consulta:
update tree set name = '<novohostname>' where name = '<antigohostname>';
Certifique-se de que o hostname corresponde exatamente em todas as três localizações antes de continuar.
Confirme as alterações no banco de dados (.exit se estiver usando a ferramenta CLI).
SELECT * FROM tree WHERE name = '<novohostname>';
Reinicie o servidor.servidor
reboot
Tudo deve iniciar exatamente como estava antes, mas desta vez com o novo hostname.
Antes de reiniciar, pode ser uma boa ideia mover arquivos relevantes nos diretórios `/var/lib/rrdcached/db/pve2-*`. Para mim, isso só precisou ser feito para dois diretórios:
mv /var/lib/rrdcached/db/pve2-node/<antigohostname> /var/lib/rrdcached/db/pve2-node/<novohostname>
e
mv /var/lib/rrdcached/db/pve2-storage/<antigohostname> /var/lib/rrdcached/db/pve2-storage/<novohostname>
Eu optei por não fazer isso e não vi problemas até agora, mas se encontrar algum, atualizarei posteriormente.
Considerações Finais
Isso PODE funcionar para clusters também. Li em algum lugar que os clusters replicam o banco de dados de configuração entre eles, então fazer essa alteração apenas no node em questão pode replicar para todos os outros nodes no cluster. Se alguém se aventurar a tentar, avise-me!
Boa sorte!