代码之家  ›  专栏  ›  技术社区  ›  Synbitz Prowduczions

Ansible跳过无法访问的主机

  •  1
  • Synbitz Prowduczions  · 技术社区  · 8 年前

    您好,我已经编写了一个脚本来ping所有清单主机。一些支持VPN服务,所以在我ping它们之前,我设置了一个隧道。

    但是,如果设置了隧道,但ansible ping未成功,则整个游戏将暂停,且后续任务均未执行(隧道未关闭/主机的其余可访问任务未执行)

    我怎样才能让游戏继续下去,跳过无法访问的主机?我看过“meta clear\u host\u错误”,但不是这样。

    这是我的剧本

    - hosts:
        - liveservers-direct
        - liveservers-special
        - liveservers-keypair
        - testservers-direct
        - testservers-special
        - testservers-keypair
        - intern
      gather_facts: no
      strategy: debug
      become: no
      tasks:
      - name: Ping some servers
        ping:
    
    
    - hosts:
        - liveservers-vpn
        - testservers-vpn
      strategy: debug
      gather_facts: no
      become: no
      serial: 1
      vars_files:
       - ../roles/vpn/vars/customers.yml
      tasks:
      - include: ../roles/vpn/tasks/connect.yml icao="{{hostvars[inventory_hostname]['icao']}}"
      - ping:
      - name:
        meta: clear_host_errors
      - include: ../roles/vpn/tasks/disconnect.yml icao="{{hostvars[inventory_hostname]['icao']}}"
    

    致命:[服务器.后面.vpn]:无法访问=&燃气轮机;{“changed”:false,“msg”:“无法通过ssh连接到主机:ssh:连接到主机10.xx.xx.xx端口22:连接超时\r\n”,“unreachable”:true}

    以上错误发生在“ping”上,如何使其跳过故障并继续处理其余主机?现在,当到达无法访问的主机时,游戏将停止,但还需要检查一些内容

    2 回复  |  直到 8 年前
        1
  •  10
  •   GPX    7 年前

    这将很快在即将发布的Ansible 2.7版本中实现,其中 ignore_unreachable 关键字。

    参见2.7的发行说明- https://github.com/ansible/ansible/blob/stable-2.7/changelogs/CHANGELOG-v2.7.rst#major-changes

    新建关键字 忽略无法访问的\u 用于播放和阻止。允许忽略由于无法访问主机而失败的任务,并使用is unreachable test检查结果。

        2
  •  -3
  •   Synbitz Prowduczions    8 年前

    删除serial关键字确实解决了在无法访问的主机上暂停播放的问题。然而,我的VPN连接游戏并没有考虑到并行处理,所以我必须改变这一点。