Ansible跳过无法访问的主机

问题描述 投票:-1回答:3

您好我已经编写了一个脚本来ping我的所有库存主机。有些人支持VPN服务,因此在我可以ping通之前,我建立了一个隧道。

这样可以正常工作,但是如果设置隧道但是ansible ping没有成功则整个播放都会暂停,并且后续任务都不会执行(隧道不会关闭/可访问的主机的其余任务不会被执行)

如何继续播放并跳过无法访问的主机?我看过“meta clear_host_errors”,但事实并非如此。

这是我的剧本

- 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']}}"

致命:[server.behind.vpn]:无法访问! => {“已更改”:false,“msg”:“无法通过ssh连接到主机:ssh:连接到主机10.xx.xx.xx端口22:连接超时\ r \ n”,“无法访问” :true}

上面的错误发生在“ping”如何让它跳过失败并继续与其他主机?当游戏到达无法到达的主机时,游戏就会停止,但还需要检查一些游戏

python error-handling ansible ping
3个回答
6
投票

这将很快在即将发布的Ansible 2.7版本中使用ignore_unreachable关键字。

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

播放和块的新关键字ignore_unreachable。允许忽略由于无法访问的主机而导致失败的任务,并检查无法访问的测试结果。


-2
投票

你可以尝试使用ignore_errors: yes。无论原因是什么,它都会忽略任何错误,并且它将继续执行其余任务。

参考:http://docs.ansible.com/ansible/latest/playbooks_error_handling.html


-2
投票

删除串行关键字确实解决了在无法访问的主机上暂停播放的问题。但是我的VPN连接播放并没有考虑并行处理,所以我必须改变它。

© www.soinside.com 2019 - 2024. All rights reserved.