ansible_mounts 是一个字典数组,就像这样 -
"ansible_mounts": [ { "device": "/dev/mapper/vg_centos67template-lv_root", "fstype": "ext4", "mount": "/", "options": "rw", "size_available": 8806977536, "size_total": 37458894848, "uuid": "N/A" }, { "device": "/dev/sda1", "fstype": "ext4", "mount": "/boot", "options": "rw", "size_available": 369055744, "size_total": 499355648, "uuid": "N/A" }, ],
我需要确认存在一组具有最小尺寸的特定挂载点。我对此数据结构有控制权,但现在它的结构类似 -
requiredMounts:
- { mount: /tmp, size_min: 2147483648, }
- { mount: /dev/shm, size_min: 204010946560, }
我希望使用像 grep 这样的 selectattr() 过滤器,但它不可用。
致命:[tstServer]:失败!=> {"failed": true, "msg": "模版字符串时出现模板错误:没有名为 'selectattr' 的过滤器。字符串:{{ ansible_mounts | selectattr('mount', 'equalto', item.mount ) }}" }
使用神社 2.6。不知道为什么 selectattr() 不存在。
(这是詹金斯的输出,如果有人关心的话。)
乐于使用when、fail、assert、with_items、with_nested、combine()和/或其他任何东西;只是还没有找到合适的组合来使它整洁。我宁愿它不采取十几个步骤 - 一个将是理想的。
建议?
附录:我可以通过一个步骤轻松地确认安装点fail: ... when: not item.mount|is_mount
...这很有趣,因为虽然/dev/shm
以这种方式显示为挂载点(以及从df
&之类的命令mount
),但它不包含在ansible_mounts
.
这意味着我不能只用ansible_mounts
单独with_nested
的 for来检查文件大小/dev/shm
。这让我变成了一只悲伤的熊猫。
进一步的附录:
事实证明,我必须检查一个通常可通过常用文件系统获得的挂载点 (/tmp) - 最佳选项 ansible_mounts!- 一个 (/dev/shm) 是 tempfs - 最简单的似乎是 df,它也可以处理 /tmp - 以及 oracle 管理的一堆,所以它们只能通过 fdisk 获得。
最后,我必须检查每个系统的十几个驱动器,但 /tmp 是 ansible_mounts 唯一可用的驱动器。话虽这么说,我的问题变得像我问的那样没有意义......
感谢您的输入。