Skip to main content

Apt não consegue fazer update

Background e contextualização

Este problema foi observado no controller stratus, o nó de testes que é, parcialmente, subordinado ao controller cirrus. Por questões de praticidade, o stratus tem seu BMC conectado via rede ao cirrus, de modo que é possível instanciá-lo, por exemplo, ao MAAS, dando flexibilidade para derrubar e subir e descer o ambiente de testes sob demanda.

Descrição do problema

Ao rodar o comando apt update é apresentada a seguinte mensagem:

erro apt update

Este erro foi observado duas vezes:

  • Quando tirávamos a rede 10.43.0.0 (rede entre o cirrus e o stratus), que era descrita no netplan

configurações do netplan no stratus

  • Quando o cirrus ficava fora do ar, por exemplo, quando ele era desligado.

Este erro impedia que se instalasse pacotes apt no controller quando a comunicação entre os controllers era interrompida, mesmo o stratus estando, de fato, conectado à internet.

Resolução do problema

Como é possível observar na mensagem de erro, tem-se a seguinte mensagem

Could not connect to 10.43.0.1:8000 (10.43.0.1). - connect (113: No route to host)

Isso indica que o apt está usando a rede do cirrus para conectar-se aos seus repositórios. Isso é feito por uma configuração de proxy, que faz com que o cirrus seja um intermediário em todas as comunicação entre o stratus e os respositórios.

Para resolver isso, deve-se retirar o proxy do cirrus no stratus, uma vez que o stratus não deveria estar tão dependente do cirrus

  1. Listar os arquivos de configuração do apt do stratus
sudo ls /etc/apt/apt.conf.d

temos o seguinte output:

lista dos arquivos de configuração no diretório apt

O arquivo que fala sobre proxy é o 90cunrtin-aptproxy.

  1. Remover a configuração do proxy No arquivo 90cunrtin-aptproxy, tem-se o seguinte:
# 90cunrtin-aptproxy
Acquire::http::Proxy "http://10.43.0.1:8000/";

Deve-se remover essa configuração (pode-se somente comentá-la também)

# 90cunrtin-aptproxy
- Acquire::http::Proxy "http://10.43.0.1:8000/";
+ # Acquire::http::Proxy "http://10.43.0.1:8000/";
  1. Por fim, basta testar se o apt consegue fazer seus updates
sudo apt update

Em nosso caso:

apt update pós configuração

Conclusão e comentários adicionais

Esta configuração do apt deixava o stratus dependente do cirrus. Essa mudança permite que, apesar de ainda existir uma hierarquia entre as máquinas, isso não deixe seu uso independente