고정되지 않은 패키지 버전 사용

운영 패키지 업데이트를 검증하고 필요한 버전과 의존성 범위를 명시하세요.

설명

패키지 설치에 state: latest를 사용하면 실행 시점에 저장소가 제공하는 새 버전이 설치될 수 있습니다. 같은 플레이북이라도 실행 시점에 따라 결과가 달라지며, 호환성이나 의존성 변경으로 서비스 장애가 생길 수 있습니다.

자동 업데이트는 계획된 보안 패치 정책의 일부로 사용할 수 있습니다. 버전을 고정할 때도 보안 업데이트가 계속 이루어지도록 별도의 검증·갱신 절차가 필요합니다.

잠재적 영향

  • 검증되지 않은 새 버전이나 의존 패키지가 반영되어 장애와 성능 저하가 발생할 수 있습니다.
  • 실행 시점에 따라 설치 결과가 달라져 배포 재현성이 떨어질 수 있습니다.

해결 방법

  • 버전 통제가 필요한 운영 배포에는 명시적인 패키지 버전과 state: present를 사용하세요. present만으로 버전이 고정되지는 않습니다.
  • 필요한 의존성과 저장소도 관리하고 업데이트를 검증 환경에서 먼저 시험하세요. update_only: true는 새 패키지 설치를 제한하는 옵션이지 버전 고정 수단은 아닙니다.
  • 고정한 버전의 보안 업데이트를 검토하고 정기적으로 갱신하세요.

예시

기존 yum 모듈 예시이며 설치된 Ansible과 패키지 백엔드에서 지원되어야 합니다. 저장소에 해당 버전이 있어야 하고, 1.24.0은 비교용 값으로 현재 운영 버전의 권장값이 아닙니다.

변경 전

yaml
---
- name: 패키지 설치
  hosts: localhost
  tasks:
    - name: nginx 최신 버전 설치
      ansible.builtin.yum:
        name: nginx
        state: latest

실행 당시 저장소에서 사용할 수 있는 최신 버전을 설치하거나 업데이트합니다.

변경 후

yaml
---
- name: 패키지 설치
  hosts: localhost
  tasks:
    - name: nginx 고정 버전 설치
      ansible.builtin.yum:
        name: nginx-1.24.0
        state: present

설치할 nginx 버전을 지정합니다. 의존 패키지와 배포판의 패키지 릴리스까지 모두 고정하는 예시는 아니므로 필요한 범위를 별도로 관리해야 합니다.

참조