Como garantir que a instalação de atualizações usando o apt não reinicia os serviços de rede?

Como garantir que a instalação de atualizações usando o apt não reinicia os serviços de rede?

Eu tenho um manual do Ansible que uso para configurar novas VMs Linux. Recentemente, estava construindo uma nova VM com Ubuntu 22.04. O manual escreverá alguns arquivos de configuração relacionados à rede e outros enfeites, e então a etapa final do processo é usar o Ansibles ansible.builtin.packagepara instalar todas as atualizações de pacotes.

- name: "Install updates"
  become: true
  ansible.builtin.package:
    upgrade: "dist"
  register: res_pkg_updates
  notify: "reboot system"
  tags: [ never, updates ]

Minha VM foi criada a partir de um modelo que fiz há alguns meses, então o sistema operacional Ubuntu tinha alguns pacotes desatualizados, o que não é inesperado. O problema é que um dos pacotes deve suportar ou fornecer funcionalidade de rede. Portanto, quando os packagemódulos iniciam a VM no caminho de instalação das atualizações, o daemon de rede é reiniciado e a VM obtém o novo IP que foi configurado anteriormente em meu manual. Isso faz com que a tarefa do Ansible seja interrompida, aguardando uma reconexão com uma máquina que agora está em um IP diferente.


Quero saber como configurar minha ansible.builtin.packagetarefa para instalar atualizações de pacotes, masnãoreinicie quaisquer serviços, especialmente rede.

Responder1

Separe a alteração do endereço IP da transação do pacote e do resto da peça.

Primeiro atualize os pacotes e faça outras coisas.

Por último nesta peça, atualize o endereço IP deste host, mas não ative a interface no novo IP ainda. Talvez alterando um arquivo de configuração. Agende uma reinicialização deste host um pouco no futuro, como com ansible.posix.ato módulo. E, por fim, atualize o DNS para que o inventário Ansible esteja ciente da alteração de IP. Fim do jogo. Posteriormente, o host se reinicializa, concluindo a atualização do software e a alteração do IP.

Uma jogada futura pode começar com uma ansible.builtin.wait_for_connectionmaneira conveniente de tentar novamente, caso ainda não esteja disponível e acessível.

ansible.builtin.rebootem teoria, o módulo pode reiniciar, esperar o host voltar e continuar. Mas não há uma boa maneira de reinicializar um endereço IP e voltar como outro.

Responder2

Uma abordagem talvez diferente: eu usaria um IP estático para a VM, em vez de deixá-lo ser atribuído dinamicamente. Não reiniciar o daemon de rede pode causar outros problemas ao executar o manual

Ou você pode fazer isso

- name: Update package cache and install updates
  ansible.builtin.package:
    name: "*"
    state: latest
    update_cache: yes
    force: no
  become: yes

force: não impede que o gerenciador de pacotes force atualizações ou reinicie serviços

informação relacionada