仅在工作流程和清单中在失败的主机上重新运行

时间:2018-08-22 10:50:32

标签: ansible

我已经写了一部剧本来进行服务检查,在这个示例中,我们可以说检查端口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,依此类推,直到库存结束

0 个答案:

没有答案