Ansible로 점검 스크립트 배포·실행·결과 회수하기

목차

관리 서버의 점검 스크립트를 대상에 보내고 결과 파일을 다시 회수하는 playbook입니다. 원노트에서 모든 텍스트 파일을 가져와 삭제하던 부분을 전용 파일 하나로 제한하고, 호스트별 결과 덮어쓰기를 피하도록 정리했습니다.

실행 조건

인벤토리와 SSH 인증을 먼저 확인합니다. 예제 스크립트는 /home/lieper/check.sh이며 실행하면 /home/lieper/check-result.txt를 생성하도록 작성되어 있어야 합니다. 읽기 점검만 수행하는 스크립트를 먼저 검토하고 필요한 경우에만 become을 추가합니다.

playbook 작성

관리 서버에 check.yml로 저장합니다. YAML 들여쓰기를 유지하고 단순 실행에는 shell 대신 command를 사용합니다. 실패를 무시하고 성공 결과처럼 회수하지 않도록 기본 실패 처리를 유지합니다.

TERMINAL / CONFIG
- name: Run a reviewed check script
  hosts: linux
  gather_facts: false
  tasks:
    - name: Copy script
      ansible.builtin.copy:
        src: /home/lieper/check.sh
        dest: /home/lieper/check.sh
        mode: '0700'
    - name: Execute script
      ansible.builtin.command: /home/lieper/check.sh
    - name: Fetch result per host
      ansible.builtin.fetch:
        src: /home/lieper/check-result.txt
        dest: /home/lieper/results/
        flat: false

flat: false는 기본 호스트별 경로를 유지해 여러 서버의 같은 이름 파일이 덮어쓰이지 않도록 합니다. 결과에는 호스트 정보가 포함될 수 있으므로 관리 서버의 보관 권한과 기한도 정합니다.

범위 제한과 실행

TERMINAL / CONFIG
ansible-playbook -i inventory.ini check.yml --syntax-check
ansible-playbook -i inventory.ini check.yml --list-hosts
ansible-playbook -i inventory.ini check.yml --limit server01

첫 서버의 종료 코드와 결과를 확인한 뒤 범위를 늘립니다. 구문 검사는 스크립트 자체의 안전성이나 결과 정확성을 검증하지 않습니다. 원격 파일 정리가 필요하면 회수가 성공한 뒤 정확한 두 경로만 file 모듈의 absent로 제거합니다. /home 아래 *.txt를 일괄 삭제하지 않습니다.

소프트웨어 › 기타
기타 목록