当一台主机正常时 Ansible 结束角色

Ansible end role when one host is ok

Ansible:2.9.9

你好,

我在三台主机中的一台中搜索了从剧本执行任务的方法。

库存文件:

[servers]
server01
server02
server03

剧本文件:

此代码对“服务器”组中的元素执行相同次数的 ping 角色。

- hosts: servers
  roles:
    - roles:
      - ping

当“服务器”组中的元素之一为“确定”时,我搜索角色的方法结束。

我想用“jinja filter”做这个,可以吗?

例子:如果server01没问题,就不要登陆其他主机。但如果 server01 不正常,则继续发送给其他主机。

谢谢!

人们会期望 meta: end_play 和 "serial: 1" 会有所帮助,例如

- hosts: servers
  gather_facts: false
  serial: 1
  tasks:
    - block:
        - ping:
        - debug:
            msg: "{{ inventory_hostname }} OK."
        - meta: end_play
      rescue:
        - debug:
            msg: "{{ inventory_hostname }} failed."

如果主机成功完成 ping,模块 meta:end_play 应该终止播放。不幸的是,这不起作用。有一个 issue 打开。该剧完成了所有可达的主机

(删节)

  msg: server1 OK.
  msg: server2 OK.
  msg: server3 OK.

issue 解决后请在此处评论。