Ir para o conteúdo

Documentação

Proxmox VE

O Proxmox é a integração de hipervisor. Cria máquinas virtuais ao clonar um modelo, acompanha a tarefa durante a sua execução e mantém o painel a par daquilo que o cluster realmente comunica.

O que é preciso

O Proxmox não usa uma palavra-passe para a automatização. Cria-se um token de API, que é um identificador em três partes mais um segredo mostrado uma única vez.

  • Host: o URL de base completo da API. Tem de ser HTTPS; a porta 8006 é preenchida automaticamente se for omitida.
  • Identificador do token: na forma user@realm!tokenname, exatamente como o Proxmox o escreve.
  • Segredo do token: o valor que o Proxmox mostra uma única vez quando o token é criado.
  • Impressão digital TLS: o certificado do próprio nó, não o da autoridade que o emitiu.
shell
openssl s_client -connect pve.example.com:8006 </dev/null 2>/dev/null | \
  openssl x509 -noout -fingerprint -sha256
Os comandos e a saída do terminal estão em inglês em todo o lado, no painel e nestas páginas. Um só texto, uma só verdade: o que aqui se lê é literalmente o que o seu host vai devolver.
Desative a separação de privilégios no token, ou dê ao token as suas próprias permissões de forma explícita. Com ela ativada, o token começa sem nenhum dos direitos do utilizador a que pertence e todas as chamadas falham por um motivo que o Proxmox não explicita.

Definições

Quatro escolhas não secretas, no separador de definições. Sem elas, a integração está ligada mas não consegue criar nada.

  • Nó: em que nó do cluster construir. O painel oferece os nós que o seu agente viu realmente; se ainda não viu nenhum, pode escrever um.
  • Armazenamento: para onde vão os discos das máquinas novas.
  • Bridge: opcional. É guardado e usado onde a plataforma cria uma máquina de raiz, mas um clone herda o bridge do modelo a partir do qual foi clonado.
  • Intervalo de IDs de máquina: o bloco de IDs de VM do Proxmox dentro do qual o Provibr pode atribuir.

O intervalo é o limite de segurança

Esta é a definição mais importante da página. O Provibr atribui identificadores apenas dentro do intervalo que lhe indicar e nunca toca em nada fora dele. Mantenha as suas próprias máquinas de produção fora do intervalo e ficam fora de alcance, seja o que for que alguém clique no painel.

Os identificadores nunca são reutilizados, nem sequer depois de uma máquina ser eliminada. Por isso, uma mensagem de estado tardia de uma máquina que já não existe nunca pode ir parar a uma máquina nova.
Um modelo que associe como sistema operativo tem de ficar fora do intervalo, e caso contrário o painel recusa-o: dentro do intervalo, a atribuição acabaria por entregar o identificador do próprio modelo e a encomenda seguinte clonaria a partir de si mesma.

Como é criada uma máquina

Criar uma máquina é uma tarefa de clonagem seguida de um pequeno número de chamadas de configuração. O painel acompanha a tarefa e mostra o progresso real onde o Proxmox o comunica.

  1. Clonar o modelo escolhido, para o nó indicado nas definições.
  2. Aumentar o disco de arranque até ao tamanho encomendado. Um disco só pode crescer; se o modelo já for maior, a máquina fica com o tamanho do modelo.
  3. Aplicar os núcleos, a memória e as definições de cloud-init (endereço, gateway, servidores DNS, utilizador, chaves SSH) numa única chamada de configuração.
  4. Ativar a firewall e iniciar a máquina.
Depois do arranque, a máquina comunica-se como em instalação e não como em execução, e só passa a em execução quando o cloud-init tiver feito o seu trabalho dentro do sistema convidado. É por isso que uma máquina acabada de criar não fica verde de imediato.

Contentores Linux

Uma ligação Proxmox sustenta máquinas virtuais e contentores. O plano decide qual dos dois uma encomenda produz, e a partir daí o género viaja com cada comando em vez de ser adivinhado. Um contentor não é uma máquina virtual mais pequena: partilha o núcleo do seu anfitrião, e é por isso que é barato e por isso que um punhado de coisas ali simplesmente não existe.

  • O plano diz máquina virtual, contentor, ou qualquer um dos dois. Com qualquer um dos dois, a escolha faz-se durante a encomenda, e a lista de imagens segue essa escolha em vez de preencher uma em silêncio.
  • Um contentor não é clonado mas desempacotado, a partir de um modelo de contentor presente na ligação. É outro género de origem do que os modelos a partir dos quais uma máquina virtual é clonada, e uma imagem que só tem modelo de contentor não aparece na lista das máquinas virtuais.
  • Unprivileged é o que vem por omissão. A raiz dentro do contentor não é a raiz do anfitrião, e é isso que se quer a não ser que alguma coisa peça expressamente o contrário.
  • O armazenamento é um volume de raiz mais pontos de montagem. O painel mostra-os como chave, origem e caminho dentro do hóspede; o caminho do anfitrião não aparece de propósito, porque diz mais sobre o anfitrião do que sobre a máquina.

Cada comando leva o género consigo, e um comando que não sirva é recusado antes de se tornar uma tarefa, com o motivo no ecrã. Dois desses motivos significam coisas realmente diferentes.

  • Nunca: arrancar pela rede, uma máquina vazia, e o firmware ou a ordem de arranque. Um contentor não arranca a partir de uma placa de rede e não tem firmware a quem perguntar.
  • Ainda não: discos, placas de rede e o ecrã do equipamento. Um contentor tem sim armazenamento e rede, noutra forma, e reaproveitar para eles os campos de uma máquina virtual daria às mesmas palavras um segundo significado.
  • Disponível: criar, arrancar, parar, desligar, estado, apagar, suspender, retomar, reinstalar, a barreira de segurança e a sua proteção contra endereços forjados.
  • A consola é um caso à parte, e é um ainda não com motivo: a consola de uma máquina virtual é um ecrã, e um contentor não o tem. O que tem é um terminal, e isso é outro protocolo e outro cliente.

As cópias de segurança têm uma diferença fácil de falhar, e funciona exatamente ao contrário de uma máquina virtual. Um ponto de montagem só está na cópia se tiver sido marcado para isso; um disco de máquina virtual está lá enquanto não for desmarcado. Um contentor com um volume de dados que ninguém marcou tem portanto uma cópia que parece completa e contém apenas o volume de raiz.

O painel diz por cada ponto de montagem se está na cópia, e nunca chama completa a uma cobertura por medir. Os bind mounts e os dispositivos passados diretamente nunca vão de qualquer forma: o que está por trás pertence ao anfitrião e não à máquina.

Reinstalar um contentor é uma substituição e não um clone por cima. O painel mostra primeiro o que acontece a cada ponto de montagem, e só depois substitui a máquina sob um único fecho: o volume de raiz é reconstruído, e aquilo que constava como conservado é reposto. O que não estava nessa lista não é reposto.

Cloud-init

O Provibr escreve um conjunto fixo e pequeno de chaves de cloud-init e mais nada: as quatro configurações de rede, os servidores DNS e o domínio de pesquisa, o utilizador, o tipo de configuração, as chaves SSH, a palavra-passe e se deve ser executada uma atualização de pacotes no primeiro arranque. A lista existe dos dois lados, por isso um campo que por acaso se chame cloud-init nunca pode reescrever uma definição arbitrária da máquina.

A palavra-passe de root nunca aparece no registo de auditoria. Só o nome do campo fica registado; o valor viaja em separado e não é guardado.

A opção de atualizar no primeiro arranque precisa do Proxmox 8.1 ou mais recente. Num nó mais antigo, a chamada é repetida sem ela em vez de falhar.

O que pode fazer depois

Iniciar, parar, encerrar, pausar, retomar, atualizar o estado, reinstalar e eliminar. Um encerramento pede primeiro educadamente ao sistema convidado e, esgotado o tempo-limite, recorre a uma paragem forçada.

Os discos e as placas de rede podem ser adicionados, redimensionados, acoplados e desacoplados. Um disco só pode crescer. O disco de arranque e o disco de cloud-init não podem ser desacoplados, e a primeira placa de rede também não.

A firewall tem uma lista de regras editável e um registo, ambos lidos do próprio nó e nele escritos.

Bom saber

  • Um clone herda o bridge de rede do seu modelo. O bridge no plano e na integração é guardado e usado noutros sítios, mas não é aplicado a um clone.
  • A utilização de disco dentro de uma máquina virtual não é algo que o Proxmox consiga ver, por isso esse gráfico mostra o tamanho atribuído e nenhuma linha de utilização. As outras medições são reais.
  • Os modelos ficam de fora da sondagem e nunca contam para a sua licença.
  • As máquinas que existem no seu cluster mas não no Provibr são ignoradas em cada sondagem. Também não podem ser importadas a partir do Proxmox: hoje não existe importação para hipervisores.