3.2. Ansible Automation Platform을 사용한 패치 자동화
소프트웨어 패치는 모든 곳에서 보안 및 IT 운영 팀의 기본 활동입니다. 패치를 최신 상태로 유지하는 것은 소프트웨어 취약점을 수정하고 규정 준수 요구 사항을 충족하는 데 중요하지만 규모에 따라 시스템을 수동으로 패치하는 것은 시간이 많이 들고 오류가 발생할 수 있습니다. 조직은 보안, 규정 준수 및 비즈니스 목표를 충족하는 패치 관리 전략에 대해 적용할 패치 유형(알려진 악용, 중요 또는 중요한 취약점, 최적화, 일상적인 업데이트, 새로운 기능 등)을 엔터프라이즈 전체에서 사용할 수 있는 IT 자산에 대해 우선시해야 합니다. 정책 및 우선순위가 정의되고 패치 적용 계획이 수립되면 패치 관리와 관련된 수동 작업을 Red Hat Ansible Automation Platform을 사용하여 패치 배포 속도와 정확성을 개선하고 인적 오류를 줄이며 다운타임을 제한할 수 있습니다.
3.2.1. 패치 자동화의 이점
패치 프로세스를 자동화하면 다음과 같은 다양한 이점이 있습니다.
- 오류가 발생하기 쉬운 수동 작업을 줄입니다.
- 대규모 패치 배포 시간을 줄입니다.
- 유사한 시스템에서 패치의 일관성을 보장합니다. 유사한 시스템의 수동 패치 적용으로 인해 하나 이상의 오류(다른 버전을 사용하여 패치를 제거하고 일관성에 영향을 미치는 패치 적용)가 발생할 수 있습니다.
- 패치를 적용하기 전에 업데이트가 시스템 스냅샷을 가져와야 하거나 패치를 적용할 때 추가 구성 변경이 필요할 수 있는 복잡한 패치 시나리오의 오케스트레이션을 활성화합니다.
3.2.2. 패치 적용 예
다음 플레이북은 패치 적용 예제로 제공되며 대상 환경에 맞게 수정하고 프로덕션에서 사용하기 전에 철저하게 테스트해야 합니다. 이 예제에서는 RHEL 및 dnf
패키지 관리자를 사용하는 기타 운영 체제에서 패키지를 관리하기 위해 ansible.builtin.dnf
모듈을 사용합니다. 다른 Linux 운영 체제, Microsoft Windows 및 많은 네트워크 장치를 패치하는 모듈도 사용할 수 있습니다.
3.2.2.1. 모든 것을 최신 상태로 유지
랩 또는 기타 비프로덕션 시스템과 같은 일부 Red Hat Enterprise Linux 서버의 경우 사용 가능한 모든 패치를 정기적으로 설치할 수 있습니다. 다음 예제 플레이북은 매주 실행되도록 예약된 작업 템플릿에서 사용하고 모든 최신 RPM으로 시스템을 업데이트할 수 있습니다.
- name: Install all available RPM updates hosts: target_hosts become: true tasks: - name: Install latest RPMs ansible.builtin.dnf: name: '*' state: latest
3.2.2.2. 보안 업데이트만 설치
보안 에라타를 포함한 모든 RPM을 최신 상태로 유지해야 하는 조직의 경우 다음 플레이북을 정기적으로 예약된 작업 템플릿에서 사용할 수 있습니다.
- name: Install all security-related RPM updates hosts: target_hosts become: true tasks: - name: Install latest RPMs with security errata ansible.builtin.dnf: name: '*' security: true state: latest
3.2.2.3. 패키지 버전 지정
프로덕션 시스템의 경우 잘 설정된 구성 관리 방법은 알려진 테스트된 소프트웨어 조합만 배포하여 시스템이 올바르게 구성되어 예상대로 작동하는지 확인하는 것입니다. 여기에는 시스템 업데이트에 프로덕션 애플리케이션에 문제가 발생하지 않도록 알려진 버전의 운영 체제 소프트웨어 및 패치만 배포하는 작업이 포함됩니다.
다음 예제 플레이북은 대상 호스트가 RHEL 9 운영 체제를 사용하는 경우 특정 버전의 httpd
RPM 및 해당 종속 항목을 설치합니다. 지정된 버전이 이미 있거나 다른 버전의 RHEL이 설치된 경우 이 플레이북은 조치를 취하지 않습니다.
- name: Install specific RPM versions hosts: target_hosts gather_facts: true become: true vars: httpd_packages_rhel9: - httpd-2.4.53-11.el9_2.5 - httpd-core-2.4.53-11.el9_2.5 - httpd-filesystem-2.4.53-11.el9_2.5 - httpd-tools-2.4.53-11.el9_2.5 - mod_http2-1.15.19-4.el9_2.4 - mod_lua-2.4.53-11.el9_2.5 tasks: - name: Install httpd and dependencies ansible.builtin.dnf: name: '{{ httpd_packages_rhel9 }}' state: present allow_downgrade: true when: - ansible_distribution == "RedHat" - ansible_distribution_major_version == "9"
allow_downgrade: true
를 설정하면 정의된 패키지의 최신 버전이 시스템에 설치된 경우 대신 지정된 버전으로 다운그레이드됩니다.
3.2.3. 복잡한 패치 시나리오
Ansible Automation Platform에서 여러 자동화 작업을 워크플로우에 연결할 수 있으며, 이를 사용하여 복잡한 패치 시나리오에서 여러 단계를 조정할 수 있습니다.
다음 예제 복잡한 패치 시나리오는 가상 머신 스냅샷 작성, 가상 머신 패치, 워크플로우에서 오류가 발생했을 때 티켓을 생성하는 방법을 보여줍니다.
- 프로젝트 동기화를 실행하여 최신 플레이북을 사용할 수 있는지 확인합니다. 병렬로 인벤토리 동기화를 실행하여 최신 대상 호스트 목록을 사용할 수 있는지 확인합니다.
각 대상 호스트의 스냅샷을 가져옵니다.
- 스냅샷 작업이 실패하면 관련 정보를 사용하여 티켓을 제출합니다.
각 대상 호스트를 패치합니다.
- 패치 적용 작업이 실패하면 스냅샷을 복원한 후 관련 정보를 사용하여 티켓을 제출합니다.
- 패치 작업이 성공한 각 스냅샷을 삭제합니다.
다음 워크플로우 시각화는 예제 복잡한 패치 시나리오의 구성 요소가 실행되는 방법을 보여줍니다.
추가 리소스
워크플로우에 대한 자세한 내용은 자동화 컨트롤러의 워크플로우 를 참조하십시오.