Skip to main content

Renomear Nodes no Proxmox VE

```markdown
# Renomeando 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: 
A.

  1. Tivesse previsto e mudado o nome antes de adicionar guests, ou

  2. B.
  3. Fizesse backup de todos os guests, removesse-os, realizasse as alterações e depois restaurasse tudo.  

Se pudesse fazer a opção A,1, tenha certeza de que eu faria, e quem realmente tem tempo e paciência para a opção B?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`).

## Aviso
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.27 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.

Cometi o erro de não alterar o `/etc/hostname` uma vez, mas fiz as outras duas alterações corretamente. O resultado foi que não consegui usar minha chave SSH para entrar como root diretamente e não pude acessar a interface web, já que o PVE não iniciou. Felizmente, eu tinha uma conta não-root que poderia usar `su` para acessar o SSH novamente.

1. Pare os serviços `pve-cluster` e `pvestatd`:

   ```bash
   

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.

2. Faça um backup do banco de dados de configuração:

   ```bash
   cp /var/lib/pve-cluster/config.db ~
   ```

   Claro, isso não precisa ir necessariamente para sua pasta home. Apenas copie para um lugar seguro.

3. 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,node puleé osporque passosainda 5,não 6existe enenhum 7.além do atual.

4. Inicie `pve-cluster` e `pvestatd` novamente:

   ```bash
   

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.

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

6. Se cometer um erro aqui, apenas restaure o banco de dados de configuração do passo 2 e tente novamente.

7. Pare `pve-cluster` e `pvstatd` novamente.

8. Edite o hostname em `/etc/hosts` e `/etc/hostname`.

9. Use uma ferramenta SQLite para abrir o banco de dados de configuração. Eu usei o CLI SQL, que já estava presente no sistema:

   ```bash
   sqlite3 /var/lib/pve-cluster/config.db
   ```

10. Execute a seguinte consulta:

    ```sql
   

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.

11. Confirme as alterações no banco de dados (.exit se estiver usando a ferramenta CLI).

12. Reinicie o servidor. Tudo deve iniciar exatamente como estava antes, mas desta vez com o novo hostname.

13. 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:

    ```bash
   

mv /var/lib/rrdcached/db/pve2-node/<antigohostname> /var/lib/rrdcached/db/pve2-node/<novohostname>
    ```

    e

    ```bash
   

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!
```