我已经写了一部剧本来进行服务检查,在这个示例中,我们可以说检查端口110和143是否正在监听-Dovecot服务。 我的清单包含16个主机。 IP分别为.1-.16。
我要实现的目标是:如果dovecot向上,则不执行任何操作,但是如果关闭则执行X。 我遇到的问题是-如果dovecot或端口未在侦听,它不会仅在故障主机上而是在清单中的所有主机上重新启动服务
- hosts: all
gather_facts: true
tasks:
- name: Check IMAP status
shell: echo exit | telnet 127.0.0.1 143 | grep Connected
register: imapconn
ignore_errors: true
- name: Restart failed services
service:
name: dovecot
state: restarted
when: imapconn.stdout_lines != "Connected to 127.0.0.1."
上面的示例剧本
编辑:: 我无法达到以下条件:
hosts:
- "{{ item }}"
gather_facts: true
tasks:
- name: Check IMAP status
shell: echo exit | telnet 127.0.0.1 143 | grep Connected
register: imapconn
ignore_errors: true
- debug:
msg: var={{hostvars.item }}
with_items: "{{ groups['devgroup1'] }}"
with_items:
- "{{ groups['mailstorage'] }}"
服务器1至16处于邮件存储中,想要按顺序对.1进行服务检查1,然后一旦完成检查就移至2,依此类推,直到库存结束