如何在自定义Ansible插件中访问Playbook声明的变量?
Ansible自定义Action插件访问Playbook变量的方法
在自定义Action插件的run方法中,task_vars参数就是存储所有可用变量的字典,直接通过键名就能获取Playbook里定义的变量。
实现示例
1. Playbook代码
--- - hosts: all tasks: - name: "Set facts" set_fact: gate_enabled: "True" - name: 调用自定义Action插件 custom_plugin_name:
2. 插件代码
class ActionModule(ActionBase): def run(self, tmp=None, task_vars=None): # 直接从task_vars字典中获取变量 gate_enabled = task_vars.get('gate_enabled') # 后续可基于该变量做逻辑处理 result = super(ActionModule, self).run(tmp, task_vars) result['gate_enabled_value'] = gate_enabled return result
补充说明
task_vars包含当前任务可用的所有变量:涵盖Playbook中定义的facts、host_vars、group_vars、set_fact设置的变量等。- 推荐使用
dict.get()方法获取变量,避免变量不存在时抛出KeyError异常。
内容的提问来源于stack exchange,提问作者Manas
相关产品推荐
相关产品推荐

