Ir para o conteúdo

Documentação

Atualizações do agente

O agente atualiza-se segundo um horário que se define, ou no momento em que se carrega no botão. Esta página explica o que torna uma versão de confiança, quando é que a plataforma distribui uma por sua conta e como instalar uma à mão.

O que torna uma versão fiável

Dois factos independentes têm de coincidir antes de um binário novo correr no seu host: o seu hash tem de dar o valor que a plataforma publicou e tem de trazer uma assinatura válida sobre os seus bytes em bruto, feita com a chave de publicação da plataforma.

  • A soma de verificação prova que o download está intacto. Nada diz sobre quem o produziu.
  • A assinatura prova quem o produziu. É verificada pelo agente antes de ser preparado o que quer que seja e, de novo, por um script que só o root pode modificar, antes de o binário ser instalado.
  • A chave pública que essa segunda verificação usa pertence ao root. A conta de serviço com que o agente corre não a pode substituir, por isso comprometer o agente continua a não permitir executar um binário como root.
  • Uma versão sem assinatura é recusada. Tal como uma versão cuja assinatura não corresponde, mesmo quando a soma de verificação corresponde.

Atualizar a partir do painel

Quando um agente está desatualizado, o painel di-lo no topo da sua página e na lista de agentes. Prima o botão e a plataforma entrega ao agente uma ligação de download de curta duração, pela ligação que já está aberta.

  • Um agente: o aviso na sua página ou o cartão de atualização no separador de definições.
  • Vários de uma vez: selecione-os na lista de agentes e atualize a seleção. A contagem no botão inclui apenas os agentes que podem mesmo ser atualizados neste momento.
  • O painel de controlo tem um botão direto por cada agente desatualizado, para não ser preciso ir à procura.
  • O progresso sobrevive ao recarregamento da página: é lido do comando em execução, não de algo que o navegador memorize.
Um agente sem ligação não pode ser atualizado. O botão continua visível com o motivo ao lado, porque continua a ser útil saber que há uma atualização à espera.

O horário noturno

Cada agente tem um horário, e de origem está ativo às 03:00, hora da Europa central. Se numa das horas definidas existir uma versão mais recente, a plataforma entrega-a a esse agente tal como o botão faz. O resto não muda: o mesmo binário assinado, as mesmas verificações no anfitrião, o mesmo regresso atrás.

  • Várias horas por agente, seis no máximo, numa grelha de cinco minutos. Seis chega para de quatro em quatro horas e é pouco o suficiente para se ler de relance.
  • As horas são lidas no mesmo relógio de parede que o resto do painel. Uma hora que não existe na noite em que o relógio adianta corre uma hora mais tarde em vez de ser saltada, e uma hora que existe duas vezes corre uma só vez.
  • Há uma janela de recuperação de quinze minutos e nada mais. Uma atualização pensada para as 03:00 não se quer às 09:00: a noite foi escolhida de propósito.
  • Um agente que estava desligado à sua hora salta a noite sem gastar a sua vez, e apanha a seguinte. Um agente que estava alcançável mas já em dia gasta a vez, para que a sua história mostre que alguém foi ver.
  • No máximo cinco agentes de uma conta partem por minuto. Uma frota de quarenta descarrega cerca de 22 MB cada um, a partir de uma só rede, e espalhar isso por oito minutos cabe na janela de recuperação.
  • Chega um aviso quando uma atualização agendada corre bem e quando alguma falha, agrupado por conta. Um agente que falha avisa no máximo uma vez por dia, para que um anfitrião encravado não encha os avisos com a mesma frase.
O botão não desaparece. Uma atualização agendada e um botão carregado são a mesma operação, e a página do agente guarda uma história das últimas dez, horário e botão numa só lista.

O que acontece no host

O agente descarrega o binário novo ao lado de si próprio, verifica a soma de verificação e a assinatura, e só então termina. O systemd reinicia o serviço, um passo pertencente ao root verifica mais uma vez o binário preparado, instala-o de forma atómica e testa se arranca mesmo antes de o manter. Se alguma dessas etapas falhar, o binário antigo fica onde está e o serviço volta com ele.

Fazê-lo à mão

Não é obrigatório usar o painel. Tudo o que o botão faz resume-se também a alguns comandos, e o painel imprime-os já com a soma de verificação e a assinatura atuais preenchidas. Os dois passos que vale a pena manter num script próprio são os passos de verificação:

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.

Verifique a soma de verificação do que descarregou.

shell
echo "<sha256-from-the-panel>  provibr-agent-linux-x86_64" | sha256sum -c -

Verifique a assinatura contra a chave pública que está no host. É este o passo que um simples download não dá, e é o que conta.

shell
openssl pkeyutl -verify -pubin -inkey /usr/local/lib/provibr-agent/license-signing.pub -rawin \
  -in ./provibr-agent-linux-x86_64 -sigfile ./provibr-agent-linux-x86_64.sig
As instalações anteriores à existência da assinatura precisam de correr o instalador mais uma vez, para colocar a chave pública e a unidade de serviço atualizada. Até isso acontecer, o painel recusa a atualização com um motivo claro em vez de falhar a meio.