Project

Ansible 하드웨어 보고서 생성하기

정수열 2025. 2. 25. 23:30

하드웨어 보고서 생성하기

다음 요구 사항에 맞춰 /home/greg/ansible/hwreport.yml 플레이북을 생성하고, 모든 관리 대상 노드에서 하드웨어 정보를 포함하는 /root/hwreport.txt 파일을 생성해 보았습니다.

  • 인벤토리 호스트명;
  • 총 메모리 크기(MB);
  • BIOS 버전;
  • 디스크 장치 vda 크기;
  • 디스크 장치 vdb 크기;
  • 출력 파일의 각 행은 key=value 쌍을 포함합니다.

1. 플레이북 작성

hwreport.yml 플레이북을 작성하여 하드웨어 정보를 수집하고 보고서를 생성합니다.

# 플레이북 파일 생성
vim /home/greg/ansible/hwreport.yml

 

다음과 같이 플레이북을 작성합니다.

---
- name: Generate hardware report
  hosts: all
  tasks:
    - name: Download empty report template
      ansible.builtin.get_url:
        url: http://materials/hwreport.empty
        dest: /root/hwreport.txt

    - name: Add hostname to the report
      ansible.builtin.lineinfile:
        path: /root/hwreport.txt
        regexp: '^HOST='
        line: "HOST={{ inventory_hostname }}"

    - name: Add memory size to the report
      ansible.builtin.lineinfile:
        path: /root/hwreport.txt
        regexp: '^MEMORY='
        line: "MEMORY={{ ansible_memtotal_mb | default('NONE', true) }}"

    - name: Add BIOS version to the report
      ansible.builtin.lineinfile:
        path: /root/hwreport.txt
        regexp: '^BIOS='
        line: "BIOS={{ ansible_bios_version | default('NONE', true) }}"

    - name: Add vda disk size to the report
      ansible.builtin.lineinfile:
        path: /root/hwreport.txt
        regexp: '^DISK_SIZE_VDA='
        line: "DISK_SIZE_VDA={{ ansible_devices.vda.size | default('NONE', true) }}"

    - name: Add vdb disk size to the report
      ansible.builtin.lineinfile:
        path: /root/hwreport.txt
        regexp: '^DISK_SIZE_VDB='
        line: "DISK_SIZE_VDB={{ ansible_devices.vdb.size | default('NONE', true) }}"

2. 플레이북 실행

작성한 플레이북을 실행합니다.

# 플레이북 실행
ansible-navigator run /home/greg/ansible/hwreport.yml -m stdout

3. 실행 결과

플레이북 실행 결과는 다음과 같습니다.

PLAY [Generate hardware report] ***************************************************************************************************************************************************************************************************************************************************************

TASK [Gathering Facts] **********************************************************************************************************************************************************************************************************************************************************
ok: [node3]
ok: [node5]
ok: [node4]
ok: [node2]
ok: [node1]

TASK [Download empty report template] **********************************************************************************************************************************************************************************************************************************************************
changed: [node3]
changed: [node5]
changed: [node4]
changed: [node2]
changed: [node1]

TASK [Add hostname to the report] **********************************************************************************************************************************************************************************************************************************************************
changed: [node3]
changed: [node5]
changed: [node4]
changed: [node2]
changed: [node1]

TASK [Add memory size to the report] **********************************************************************************************************************************************************************************************************************************************************
changed: [node3]
changed: [node5]
changed: [node4]
changed: [node2]
changed: [node1]

TASK [Add BIOS version to the report] **********************************************************************************************************************************************************************************************************************************************************
changed: [node3]
changed: [node5]
changed: [node4]
changed: [node2]
changed: [node1]

TASK [Add vda disk size to the report] **********************************************************************************************************************************************************************************************************************************************************
changed: [node3]
changed: [node5]
changed: [node4]
changed: [node2]
changed: [node1]

TASK [Add vdb disk size to the report] ****************************************************************************************************************************************************************
changed: [node3]
changed: [node5]
changed: [node4]
changed: [node2]
changed: [node1]

PLAY RECAP ************************************************************************************************************************************************************************************************************
node1                      : ok=7    changed=6    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
node2                      : ok=7    changed=6    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
node3                      : ok=7    changed=6    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
node4                      : ok=7    changed=6    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
node5                      : ok=7    changed=6    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

4. 검증

생성된 하드웨어 보고서를 확인합니다.

# 보고서 내용 확인
ansible all -a 'cat /root/hwreport.txt'