我正在尝试编写一个 Ansible 剧本来检查多个服务器上的磁盘空间。
到目前为止,这是我的 Ansible 剧本:
---
- hosts: all
become: yes
tasks:
- name: Check / freespace
shell: df -h / | awk '{if($5 > 85)print (IP}'s
基本上我想要做的是,一旦满足 shell 条件,我想要检索所有超过 85% 的服务器的 IP。
我建议使用Ansible 事实 https://docs.ansible.com/ansible/latest/user_guide/playbooks_vars_facts.html ansible_mounts
获取已安装设备的列表及其详细信息。
这个事实将告诉我们:
- 总空间在
size_total
- 中的自由空间
size_available
因此我们可以通过以下方式获取可用空间的百分比:
size_available / size_total x 100 = free space
如果可用空间少于 15%,下面的示例任务将显示设备:
# Use this task if "gather_facts" is disabled
- name: collect ansible_mounts facts
setup:
filter: ansible_mounts
- name: Show Devices having less than 15% free space
debug:
msg: "Device with > 85% use: {{ item.device }}"
when: item.size_available / item.size_total * 100 < 15
loop: "{{ ansible_mounts }}"
loop_control:
label: "{{ item.mount }}"
Update:
如果您想过滤掉本地设备安装,您可以使用regex_search
过滤器喜欢not item.device | regex_search('^/dev')
in the when
另外条件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)