我有一个Playbook来检查硬盘可用空间,如果达到阈值限制则发送电子邮件。以下是我的游戏
---
- hosts: Test
tasks:
- name: Ensuring that free space on '/' is grater than 30%
assert:
that:
- not {{ item.mount == '/' and ( item.size_available < item.size_total - ( item.size_total|float * 0.3 ) ) }}
with_items: '{{ ansible_mounts }}'
ignore_errors: yes
register: disk_free
- debug: var=disk_free
- name: Notifying the IT admin about the disk usage
mail:
host="smtp.myserver.com"
port="2525"
username="my_username"
password="my_password"
from="my_email"
to="to_email"
subject='HDD Space Low'
body='{{ inventory_hostname }} is running low on disk space. Currently {{ disk_free.results['item']['size_available'] }}MB available.'
以下是我运行上述播放时收到的调试输出:
ok: [Test] => {
"disk_free": {
"changed": false,
"failed": true,
"msg": "One or more items failed",
"results": [
{
"_ansible_item_result": true,
"_ansible_no_log": false,
"_ansible_verbose_always": true,
"assertion": "not True",
"evaluated_to": false,
"failed": true,
"item": {
"device": "/dev/mapper/centos-root",
"fstype": "xfs",
"mount": "/",
"options": "rw,seclabel,relatime,attr2,inode64,noquota",
"size_available": 18377105408,
"size_total": 19828572160,
"uuid": "d700725b-6937-4e56-8e20-2039e787f055"
}
现在,当我在通知电子邮件正文中访问可验证的结果时,它会失败。
失败! =&GT; {“failed”:true,“msg”:“字段'args'的值无效,似乎包含一个未定义的变量。错误是:'list object'没有属性
有人可以帮我在外发邮件中打印'size_available'值吗?
答案 0 :(得分:0)
你得到:
&#39;列出对象&#39;没有属性
如果查看调试任务的结果,您会注意到disk_free.results
是一个列表(因为您在注册时使用了循环),因此它不包含item
。< / p>
对于单个值,您可以引用disk_free.results[0]['item']['size_available']
,但我想您应该遍历列表。