如何使用Ansible为脱机主机运行委派任务?

我有Ansible任务来启用和禁用某些主机的Nagios检查。 他们使用“delegate_to”Nagios服务器。 但是,如果有问题的主机处于脱机状态,我无法使用它们,因为Ansible试图通过SSH进入,并在无法通过时将其标记为失败。

由于这个任务实际上并不需要以任何方式联系主机,所以似乎应该有一种方法让Ansible忽略主机并仅与委托进行通信。 这可能吗?

正如一些评论所暗示的,很可能是别的东西导致SSH连接错误,而不是委托任务。 使用delegte_to: ,Ansible只能通过SSH连接到delegate子句中指定的机器(localhost以外的情况)。

我会尝试build议禁用事实( gather_facts: no ),并分享失败的剧本运行的输出。 也可能是由于目标主机closures而导致播放失败的剧本中包含未委托的任务/angular色。

你将需要通过使用例如标签来跳过不可用主机的所有常见任务,禁用事实收集,这将工作。 像这样testing:

test_delegate.yml:

 - hosts: unavailable.test gather_facts: false tasks: - command: /bin/stuff - ping: delegate_to: localhost tags: nagios 

结果:

 $ ansible-playbook -i unavailable.test, -tnagios test_delegate.yml PLAY [unavailable.test] ******************************************************** TASK [ping] ******************************************************************** ok: [unavailable.test -> localhost] PLAY RECAP ********************************************************************* unavailable.test : ok=1 changed=0 unreachable=0 failed=0 

本例中的localhost代表可达主机,在你的情况下是nagios。