Atualizações automáticas e reversões manuais

O Fedora CoreOS fornece atualizações e reversões atômicas por meio de implantações OSTree.

Por padrão, o sistema operacional realiza atualizações automáticas contínuas por meio de dois componentes:

  • rpm-ostree lida com várias implantações OSTree em disco e pode alternar entre elas no momento da inicialização.

  • Zincati verifica continuamente se há atualizações do sistema operacional e as aplica via rpm-ostree.

Cuidado com as atualizações

O agente local do Zincati verifica periodicamente com um serviço remoto para ver quando as atualizações estão disponíveis. Um valor personalizado de "rollout wariness" (consulte a documentação) pode ser fornecido para permitir que o servidor saiba o quão ansioso ou avesso ao risco o nó está em receber atualizações.

O parâmetro rollout_wariness pode ser definido como um valor de ponto flutuante entre 0.0 (mais ansioso) e 1.0 (mais conservador). Para receber atualizações muito cedo no ciclo de implementação em fases, um nó pode ser configurado com um valor baixo (por exemplo, 0.001). Isso pode ser feito durante o provisionamento usando o trecho de código de configuração Butane mostrado abaixo:

Exemplo: configurando cautela de implementação do Zincati
variant: fcos
version: 1.5.0
storage:
  files:
    - path: /etc/zincati/config.d/51-rollout-wariness.toml
      contents:
        inline: |
          [identity]
          rollout_wariness = 0.001

Finalização da atualização do sistema operacional

Para finalizar uma atualização do sistema operacional, a máquina deve reiniciar. Como esta é uma ação invasiva que pode causar interrupção do serviço, o Zincati permite que o administrador do cluster controle quando os nós podem reiniciar para finalização da atualização.

As seguintes estratégias de finalização estão disponíveis:

  • Assim que a atualização for baixada e preparada localmente, reiniciar imediatamente para aplicar uma atualização.

  • Usar um gerenciador de bloqueio externo para coordenar a reinicialização de um conjunto de máquinas.

  • Permitir reinicializações apenas dentro das janelas de manutenção configuradas, definidas em uma programação UTC semanal.

Uma estratégia de finalização específica pode ser configurada em cada nó.

O trecho de código Butane abaixo mostra como definir duas janelas de manutenção durante os dias de fim de semana, começando às 22:30 UTC e durando uma hora cada:

Exemplo: configurando a estratégia de atualização do Zincati
variant: fcos
version: 1.5.0
storage:
  files:
    - path: /etc/zincati/config.d/55-updates-strategy.toml
      contents:
        inline: |
          [updates]
          strategy = "periodic"
          [[updates.periodic.window]]
          days = [ "Sat", "Sun" ]
          start_time = "22:30"
          length_minutes = 60

Para mais detalhes sobre a finalização das atualizações, consulte a documentação do Zincati.

Reversões manuais

Quando uma atualização é concluída, a implantação anterior do sistema operacional permanece no disco. Se uma atualização causar problemas, você pode usá-la como alternativa. Esta é uma operação manual que requer intervenção humana e acesso ao console.

Reversão temporária

Para inicializar temporariamente a implantação anterior do sistema operacional, mantenha pressionado Shift durante o processo de inicialização do sistema operacional. Quando o menu do carregador de inicialização aparecer, selecione a entrada do sistema operacional relevante no menu.

Reversão permanente

Para reverter permanentemente para a implantação anterior do sistema operacional, autentique-se no nó de destino e execute os comandos abaixo:

# Para o serviço que realiza atualizações automáticas
sudo systemctl stop zincati.service

# Marca a implantação anterior do sistema operacional como padrão e a reinicia imediatamente
sudo rpm-ostree rollback -r

Observe que Zincati continuará procurando por atualizações e upgrades para qualquer nova implantação de sistema operacional disponível, diferente daquela que você acabou de reverter.

Se preferir, você pode desativar temporariamente as atualizações automáticas. Mais tarde, você pode reativá-los para permitir que a máquina acompanhe o fluxo normal de atualizações:

# Desativa o Zincati para cancelar futuras atualizações automáticas
sudo systemctl disable --now zincati.service

[...]

# Posteriormente, reative-o para realinhar com o fluxo de atualizações
sudo systemctl enable --now zincati.service