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