
새 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는 패키지 관리자가 강제로 업데이트하거나 서비스를 다시 시작하는 것을 방지합니다.