Ansible中如何命名Action插件以覆盖FQCN调用的任务?
Ansible Action插件无法拦截FQCN调用的解决方法
问题本质:Ansible默认按模块短名称匹配Action插件,使用FQCN调用模块时,插件若未关联对应命名空间,会被跳过并回退到
normal插件。解决步骤:
- 保持Action插件文件名与模块短名称一致(比如
jira.py),无需改为FQCN命名或创建子目录。 - 在插件代码中添加
module_name属性,明确指定要拦截的FQCN模块:from ansible.plugins.action import ActionBase class ActionModule(ActionBase): # 关联目标FQCN模块 module_name = 'community.general.jira' def run(self, tmp=None, task_vars=None): # 你的插件逻辑 result = super().run(tmp, task_vars) # 自定义处理 return result - 将插件放置在
action_plugins目录(若为自定义集合,放在集合的plugins/action/路径下)。
- 保持Action插件文件名与模块短名称一致(比如
验证方式:
执行 playbook 时添加-v参数,查看输出是否显示加载了你的自定义插件:ansible-playbook your_playbook.yml -v若输出中出现
Using action plugin /path/to/your/action_plugins/jira.py,则说明配置生效。
内容的提问来源于stack exchange,提问作者Ryaner
相关产品推荐
相关产品推荐

