Ansible 서버 상태 체크 플레이북

아래 플레이북은 매우 간단한 서버 상태 체크 예제이다.

디스크 사용량의 경우 여러줄로 된 결과를 리턴하기 때문에 미리 문자열 처리를 하였다.
이런 방식이 아니라 서버쪽에 미리 파일로 저장하고 나중에 결과 파일만 호스트쪽으로 가져오는 방법을 사용해도 된다.

---
- name: 서버 상태 점검 및 결과 로컬에 저장
  hosts: all
  become: yes
  gather_facts: no
  vars:
    local_results_dir: "/root/check_results"  # 결과를 저장할 디렉토리 경로

  tasks:
    - name: 시스템 업타임 확인
      command: uptime
      register: uptime_result

    - name: 디스크 사용량 확인
      shell: df -hTP
      register: disk_usage

    - name: 디스크 사용량 문자열 포맷팅
      set_fact:
        formatted_disk_usage: "{{ disk_usage.stdout_lines | join('\n     ') }}"

    - name: 메모리 사용량 확인
      command: free -m
      register: memory_usage

    - name: CPU 사용량 확인
      shell: top -bn1 | grep load
      register: cpu_usage

    - name: 점검 결과 파일에 저장  
      delegate_to: localhost
      blockinfile:
        path: "{{ local_results_dir }}/check_result_{{ inventory_hostname }}.txt"
        create: yes
        block: |
          대상서버: 
            {{ inventory_hostname }}
          업타임:
            {{ uptime_result.stdout }}
          디스크사용량:  
            {{ formatted_disk_usage }}
          메모리사용량: 
            {{ memory_usage.stdout }}
          CPU사용량: 
            {{ cpu_usage.stdout }}