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'