我尝试用Ansible执行一个有趣的事情,但出了点问题。
示例:
文件内容:
1.1.1.1
1.1.1.2
1.1.1.2
Ansible playbook:
- hosts: localhost
connection: local
gather_facts: no
tasks:
- name: Get list of IP adresses
shell: cat /home/file
register: ip_addrs
- name: Check SSH port
wait_for:
host: "{{ item }}"
port: 22
timeout: 5
with_items: "{{ ip_addrs.stdout_lines }}"
ignore_errors: true
我的剧本以结果结束:
ok - 1.1.1.1
ok - 1.1.1.2
timeout - 1.1.1.3
循环的结果包括一个回复中每个任务的结果。 我的问题:如何在循环中提取项目的值,导致我的任务失败?
类似于register: result
的循环任务和项目when: result|failed
的某些命令。
答案 0 :(得分:0)
注册循环任务的结果并检查每个项目的子结果,如下所示:
- name: Check SSH port
wait_for:
host: "{{ item }}"
port: 22
timeout: 5
with_items: "{{ ip_addrs.stdout_lines }}"
ignore_errors: true
register: loop_res
- debug:
msg: bad host
when: item is failed
with_items: "{{ loop_res.results }}"