ansible:静默跳过无法访问的主机

ice*_*awk 7 ansible

我们使用ansible来配置一些主机,包括IP配置。我们不想使用 DHCP 服务器。有时我们会向网络添加新主机。这些新主机在一个 IP 地址范围内,而现有的生产主机在另一个 IP 地址范围内。我们只是将新主机放在第一个网络中,然后让 ansible 配置它们,测试它们并将 IP 更改为生产范围。Ansible 通过 cron 定期运行。

但是,当没有新主机时,ansible 会报 unreachable 错误。没有新的主机是通常的情况。我怎样才能抑制它或让它不那么突出?

基本上我们的剧本是这样的:

---
#  configure existing hosts
- hosts: production
  tasks:
    - name: do regular maintenance
      # ...

- hosts: new
  # Does not seem to do anything
  ignore_errors: True 
  tasks: 
    - name: configure freshly discovered host
        # ...
    - name: test freshly discovered host
        # ...
    - name: change ip config to production network
        # ...
Run Code Online (Sandbox Code Playgroud)

/etc/ansible/hosts 看起来像这样:

[production]
192.168.2.[11:255]

[new]
# those are firewalled
192.168.2.[1:10]
Run Code Online (Sandbox Code Playgroud)

当我运行这个时,我看到一个大红色

PLAY RECAP   ****************************************************
192.168.2.1              : ok=0    changed=0    unreachable=1    failed=0   
[...]
Run Code Online (Sandbox Code Playgroud)

最后,这让我的同事感到困惑。

我看过这个问题,我想如果我使用 ignore_errors 但不设置标志,它应该默默地跳过无法访问的主机,但它似乎没有任何影响。

Kdg*_*Dev 5

要添加这个答案:在 Ansible 2.7 中添加了一个修复程序:https : //github.com/ansible/ansible/blob/stable-2.7/changelogs/CHANGELOG-v2.7.rst#major-changes

新关键字 ignore_unreachable 用于播放和阻止。允许忽略由于主机不可达而失败的任务,并使用不可达测试检查结果。

编辑:根据个人经验,我需要将其添加ignore_errors到剧本中才能真正继续。