我的 ansible 版本是 2.4
我的目的是发送一封电子邮件,其中包含所有正常运行时间超过 100 天的服务器。仅当清单中的所有服务器均可访问时,以下脚本才能正常工作。
如果清单中的任何服务器不可访问,发送邮件任务将失败并显示以下错误:
<块引用>任务[发送邮件]
致命:[本地主机]:失败! => {"msg": "该任务包含一个带有未定义变量的选项。错误是:'dict object' 没有属性 'stdout'\n\n错误似乎在 '/ansible/uptime.yml' : 第 26 行,第 10 列,但可能\n在文件中的其他位置,具体取决于确切的语法问题。\n\n有问题的行似乎是:\n\n 任务:\n - 名称:发送邮件 \n ^ 此处\ n\neexception type:
tasks:
- name: check uptime
ignore_errors: yes
shell: uptime |awk '{print $3}'
register: up_time
- name: send mail
hosts: localhost
gather_facts: no
become: no
tasks:
- name: send mail
mail:
host: relayserver
port: 25
from: user@company.com
to: manager@company.com
subject: uptime
body: |-
{% for server, servervars in hostvars.items() %}
{% if servervars.up_time.stdout |int >= 100 %}
{{ server }} - {{"has"}} {{ servervars.up_time.stdout }}
{% endif %}
{% endfor %}
delegate_to: localhost
run_once: true
我需要邮件任务来忽略无法访问的服务器,并只为可访问的服务器发送邮件。