我正在编写一个自定义的 ansible 回调:
class CallbackModule(CallbackBase):
CALLBACK_VERSION = 2.0
CALLBACK_TYPE = 'aggregate'
CALLBACK_NAME = 'my_callback'
def v2_runner_on_ok(self, result):
print("v2_runner_on_ok")
import pdb; pdb.set_trace()
result._host.groups[0].get_vars()
当我检查 result._host.groups[0].get_vars()
的内容时,它返回 {}
,这不是我所期望的。我已经验证主机正在接收group_vars
(通过在我的剧本中放置debug
任务并打印出预期的var)。所以我的问题是,为什么回调没有收到主机的 group_vars
?
另一个同样奇怪的地方是,host_vars
也没有转换到我的回调插件。似乎唯一流入我的插件的变量是 list 文件中定义的变量,以及一些神奇的变量。
最佳答案
您正在访问 ansible.inventory
类下的变量,因此您只能获得 list 中定义的变量。
如果你想访问其他变量,你需要通过play的变量管理器:
def v2_playbook_on_play_start(self, play):
variable_manager = play.get_variable_manager()
hostvars = variable_manager.get_vars()['hostvars']
关于ansible - 自定义 Ansible 回调未接收 group_vars/host_vars,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51640444/