当挂载点为 /dev/backboot >70% 时设置为“高”,如果 < 70% 设置为“正常”,如果根本不存在这样的挂载点,则设置为“不可用”
下面的示例可以使用两个选项,但我需要三个选项,你能建议一下吗
- 名称:获取用法
命令:df -k | grep -i /dev/backboot | grep -i /dev/backboot | grep -i /dev/backboot | grep -i /dev/backboot | awk '{print $5}'
注册:
此处使用已注册 vlaue 'usage.stdout' 的输出为 67% 作为示例
- name: 设置值
set_fact:
mspace: "{{ (usage.stdout | int < 80) | ternary('Normal','High') }}"
答案1
转换67%
为 int 不会产生67
,它会产生,0
因为%
,您需要将其从输出中删除。
至于你的问题,你可以设置一个条件来将变量设置为not available
if /dev/backboot 不存在:
- stat:
path: /dev/backboot
register: backboot
- set_fact:
mspace: 'not available'
when: backboot.stat.exists != true
- block:
- command: df -k | grep -i /dev/backboot | awk '{print $5}'
register: usage
- set_fact:
mspace: "{{ (usage.stdout | int < 80) | ternary('Normal','High') }}"
when: backboot.stat.exists == true
答案2
在 Ansible 2.8 中,有第三个选项为 null。有点惊讶的是,当安装点不存在时,setfact 中没有错误,尽管我还没有尝试过。
另一种选择是添加第二个 setfact 并在现有 setfact 和新的 setfact 中添加一个 when 来检查安装点的 Ansible 事实 - 原始设置会在 mspace 存在时设置 mspace,而另一个则在不存在时设置。像这样的东西(可能会略有变化,具体取决于 ansible 的版本和您运行它的系统)。
set_fact:mspace:“不可用”时:(ansible_devices.backboot未定义)
并添加到原始 setfact
当:(定义了ansible_devices.backboot)
如果您有可用的事实,那么 ansible 可以使用这些事实,而无需发出 df 命令。