检查目录大小
bash
复制代码
worker_du.yml
bash
复制代码
# ansible-playbook -i hosts worker_du.yml --limit w10
---
- name: 检查目录大小
hosts:
- w10 # 可以根据需要修改目标主机
# 可以添加更多主机
tasks:
- name: 获取每台主机 /root/worker01 目录大小
shell: du -sh /root/worker01/ | awk '{print $1}'
register: directory_size
tags:
- check_size
- name: 收集所有主机的目录大小
set_fact:
host_size: "{{ directory_size.stdout }} {{ ansible_hostname }}"
tags:
- check_size
- name: 在控制节点显示所有结果
debug:
msg: "{{ hostvars[item]['host_size'] }}"
loop: "{{ ansible_play_hosts_all | sort }}"
run_once: true
tags:
- check_size
- name: 创建临时文件
file:
path: "{{ ansible_user_dir }}/.ansible_tmp_sizes.txt"
state: touch
mode: '0600'
delegate_to: localhost
run_once: true
tags:
- check_size
- name: 显示排序后的结果(按大小)
shell: echo "{{ hostvars[item]['host_size'] }}" >> {{ ansible_user_dir }}/.ansible_tmp_sizes.txt
delegate_to: localhost
loop: "{{ ansible_play_hosts_all }}"
run_once: true
tags:
- check_size
- name: 排序并显示最终结果
shell: "sort -hr {{ ansible_user_dir }}/.ansible_tmp_sizes.txt | awk '{print $2 \": \" $1}'"
delegate_to: localhost
register: sorted_results
run_once: true
tags:
- check_size
- name: 清理临时文件
file:
path: "{{ ansible_user_dir }}/.ansible_tmp_sizes.txt"
state: absent
delegate_to: localhost
run_once: true
tags:
- check_size
- name: 显示排序后的最终结果
debug:
msg: "{{ sorted_results.stdout_lines }}"
run_once: true
tags:
- check_size