Skip to main content

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: 

  1. Tivesse previsto e mudado o nome antes de adicionar guests, ou
  2. 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.

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).

Reinicie o servidor. 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!