Ansible 2.3.1回调插件:调用v2_playbook_on_task_start时如何获取目标主机

问题描述 投票:0回答:1

我正在实现

v2_playbook_on_task_start(self, task, is_conditional)
的逻辑,并且想要获取应该运行任务的目标主机的主机名,但主机名未在任务对象中公开。

有没有办法在这个回调中获取目标主机?

callback ansible
1个回答
1
投票

看看 Ansible 代码的结构以及 2.3.1 中的执行方式,看起来没有办法或解决方法可以在上述回调中获取主机名。

PlayIterator 对象和 PlayContext 在 TaskQueueManager.run() 内部构造,然后这个 PlayIterator 对象被传递到执行任务的预选“策略”。问题出在这些“策略”的实现内部,例如“免费”策略,代码循环遍历主机列表,但不将主机详细信息传递给回调。也不可能使用 Templar 手动模板化

{{ inventory_hostname }}
,因为 Templar 需要主机名作为参数。

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