【发布时间】:2020-04-17 15:55:52
【问题描述】:
以下是一段代码,它正在检索本地区域列表,并在任何一个本地区域未处于 RUNNING 状态时尝试进入救援块。
但救援块失败,在'检查区域是否处于运行状态'
期望是发送一封带有任务名称的电子邮件。但它在处理其他失败的任务时效果很好。有人可以指导吗?
失败了! => {"msg": "该任务包含一个带有未定义变量的选项。错误是:'item' 未定义\n\n错误似乎在 '/etc/ansible/playbooks/misc/test1404.yml' :第 23 行,第 9 列,但可能\n位于文件中的其他位置,具体取决于确切的语法问题。\n\n违规行似乎是:\n\n 救援:\n - 名称:从 Ansible 发送电子邮件控制器节点\n ^ 这里\n"}
- '{{ host }}'
tasks:
- block:
- name: Retrieve list of local zones
shell: /usr/sbin/zoneadm list | grep -v global
register: lzones
tags:
- local_zone_list
- debug:
msg: "{{ item }}"
with_items: "{{lzones.stdout_lines}}"
- name: Check if the zones are in running state
shell: /usr/sbin/zoneadm list | grep -v global | grep "{{ item }}" | awk '{print$3}'
register: status
with_items: "{{lzones.stdout_lines}}"
failed_when: status.stdout.find('running') == -1
< few other tasks>
rescue:
- name: Sending an e-mail from Ansible controller node
mail:
host: localhost
port: 25
to: xyz@abc.com
subject: Reboot Failed
body: Reboot FAILED at TASK - {{ ansible_failed_task.name }} with ERROR {{ ansible_failed_result }}
delegate_to: localhost
【问题讨论】:
-
如果您向我们展示
/etc/ansible/playbooks/misc/test1404.yml的第 23 行会更有帮助,因为我们无法猜测这些行中的哪一行是您文件中的第 23 行
标签: ansible