gpt4 book ai didi

ansible - 如何访问 Action 插件中的 ansible 变量(不提供它们作为参数)

转载 作者:行者123 更新时间:2023-12-05 07:28:20 25 4
gpt4 key购买 nike

我想编写一个 Action 插件(具体来说,是“断言”的变体),它将调用 Action 插件的角色记录到文件中,将角色名称作为插件的参数。

我可以看到(根据 this question )“{{role_name}}”是一个定义明确的变量。但我不知道如何在 Python 中访问它。

我不想做:

- name: example asset
custom_assert:
that: 1 > 0
msg: "Basic maths has broken"
role: "{{role_name}}"

我已经尝试了以下方法(基于电子邮件交换 here )

from ansible.inventory.manager import InventoryManager
from ansible import constants as C
inventory = InventoryManager(self._loader, C.DEFAULT_HOST_LIST)
return inventory.get_host(self._connection.host).vars

但我可以通过那里访问的所有内容都是在我的主机文件中设置的一些变量 - 而不是使用“register”或“setup”设置的全部变量范围,或者由于其他原因(例如 role_name)已知的 ansible。

(此外,我还想访问任务名称 - 尽管“that”和“msg”参数名义上包含我需要的所有信息,但我预见到能够记录任务名称也会带来好处):

最佳答案

我认为 Custom Ansible Callback not receiving group_vars/host_vars 下提供的解决方案正是您要找的。

基本上,您需要按如下方式访问播放变量管理器:

def v2_playbook_on_play_start(self, play):
variable_manager = play.get_variable_manager()
hostvars = variable_manager.get_vars()['hostvars']

关于ansible - 如何访问 Action 插件中的 ansible 变量(不提供它们作为参数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53411786/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com