Ansible全局自定义过滤器应该存放在项目的什么位置?
Ansible 完全支持配置项目级全局自定义过滤器,不需要绑定到特定 role 或 collection,配置后整个项目内的所有 play、任务、角色、集合都可以直接调用。
全局过滤器存放方案
1. 仅当前项目生效(最适配你当前的项目结构)
直接在项目根目录创建名为filter_plugins的文件夹,将你编写的过滤器 Python 文件放入该目录即可。Ansible 运行时会自动扫描根目录下的filter_plugins路径加载过滤器,无需额外修改配置。
新增目录后的项目结构参考:
├── ansible_collections │ ├── ... ├── filter_plugins # 全局过滤器存放目录 │ ├── my_custom_filter.py │ └── other_filter.py ├── group_vars │ └── ... ├── host_vars │ └── ... ├── plays │ └── .. ├── roles │ ├── external │ └── internal
2. 跨所有Ansible项目生效
如果你需要所有本地运行的Ansible项目都能使用这些过滤器,可以选择以下任意一种方式:
- 将过滤器文件放入当前用户家目录下的
~/.ansible/plugins/filter/路径 - 修改Ansible全局配置文件
ansible.cfg,在defaults段中配置filter_plugins参数,多个存储路径用英文冒号分隔即可。
注意事项
- 过滤器存在优先级,优先级从高到低为:项目根目录
filter_plugins> 角色内filter_plugins> 集合内filter_plugins> Ansible内置过滤器,重名时高优先级的过滤器会覆盖低优先级实现。 - 运行
ansible-doc -t filter -l命令可以查看所有已加载的过滤器,搜索你自定义的过滤器名称即可验证是否加载成功。
内容的提问来源于stack exchange,提问作者onknows
相关产品推荐
相关产品推荐

