apt를 사용하여 업데이트를 설치해도 네트워킹 서비스가 다시 시작되지 않는지 확인하는 방법은 무엇입니까?

apt를 사용하여 업데이트를 설치해도 네트워킹 서비스가 다시 시작되지 않는지 확인하는 방법은 무엇입니까?

새 Linux VM을 구성하는 데 사용하는 Ansible 플레이북이 있습니다. 저는 최근 Ubuntu 22.04를 사용하여 새 VM을 구축하고 있었습니다. 플레이북은 네트워킹 등과 관련된 일부 구성 파일을 작성한 후 프로세스의 마지막 단계는 Ansibles를 사용하여 ansible.builtin.package모든 패키지 업데이트를 설치하는 것입니다.

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

내 VM은 몇 달 전에 만든 템플릿으로 만들어졌기 때문에 Ubuntu OS에 오래된 패키지가 몇 개 있었는데 이는 예상치 못한 일이 아닙니다. 문제는 패키지 중 하나가 네트워킹 기능을 지원하거나 제공해야 한다는 것입니다. 따라서 package모듈이 업데이트 설치 경로에서 VM을 시작하면 네트워킹 데몬이 다시 시작되고 VM은 내 플레이북에서 이전에 구성된 새 IP를 가져옵니다. 이로 인해 Ansible 작업이 중단되고 현재 다른 IP에 있는 머신에 다시 연결될 때까지 기다립니다.


ansible.builtin.package패키지 업데이트를 설치하도록 작업을 구성하는 방법을 알고 싶지만~ 아니다모든 서비스, 특히 네트워킹을 다시 시작하세요.

답변1

IP 주소 변경은 패키지 거래 및 나머지 플레이와 분리하세요.

먼저 패키지를 업데이트하고 다른 작업을 수행하십시오.

이 플레이의 마지막 작업으로 이 호스트의 IP 주소를 업데이트하되 아직 새 IP에서 인터페이스를 가져오지 마십시오. 아마도 구성 파일을 변경하는 것일 수도 있습니다. 모듈 등을 사용하여 나중에 이 호스트를 재부팅하도록 예약합니다 ansible.posix.at. 마지막으로 Ansible 인벤토리가 IP 변경을 인식하도록 DNS를 업데이트합니다. 플레이 종료. 나중에 호스트가 자체적으로 재부팅되어 소프트웨어 업데이트 및 IP 변경이 완료됩니다.

향후 플레이는 ansible.builtin.wait_for_connection아직 연결되지 않았거나 연결할 수 없는 경우 재시도할 수 있는 편리한 방법으로 시작할 수 있습니다.

ansible.builtin.reboot이론상 모듈은 재부팅을 수행하고 호스트가 돌아올 때까지 기다린 후 계속할 수 있습니다. 그러나 하나의 IP 주소를 재부팅하고 다른 IP 주소로 다시 돌아올 수 있는 좋은 방법은 없습니다.

답변2

동적으로 할당되는 대신 VM에 고정 IP를 사용하는 다른 접근 방식이 있을 수 있습니다. 네트워크 데몬을 다시 시작하지 않으면 플레이북을 실행할 때 다른 문제가 발생할 수 있습니다.

아니면 이렇게 할 수도 있어요

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

force: no는 패키지 관리자가 강제로 업데이트하거나 서비스를 다시 시작하는 것을 방지합니다.

관련 정보