ansible - Ansible 角色 - 无法检测过滤器插件
问题描述
我试图在一个角色中构建一个非常简单的插件过滤器。但是,当我去测试插件时,它没有检测到它。Ansible 版本是 2.9。
目录
(base) root@8c08139d265e:/workspace# tree
.
├── Dockerfile
├── Makefile
├── README.md
├── defaults
│ └── main.yml
├── filter_plugins
│ ├── __init__.py
│ └── sample_filter.py
├── handlers
│ └── main.yml
├── meta
│ └── main.yml
├── requirements.txt
├── tasks
│ └── main.yml
├── tests
│ ├── inventory
│ └── test.yml
└── vars
└── main.yml
插入
(base) root@8c08139d265e:/workspace# cat filter_plugins/sample_filter.py
class FilterModule(object):
def filters(self):
return {'cloud_truth': cloud_truth}
def cloud_truth(a):
print(type(a))
return a.replace("the cloud", "somebody else's computer")
测试
(base) root@8c08139d265e:/workspace# cat tests/test.yml
---
- name: test cloud_truth filter
hosts: localhost
roles:
- .
vars:
statement: "I store my files in the cloud"
tasks:
- name: make a statement
debug:
msg: "{{ statement | cloud_truth }}"
错误
TASK [make a statement] *****************************************************************************************
fatal: [localhost]: FAILED! => {"msg": "template error while templating string: no filter named 'cloud_truth'. String: {{ statement | cloud_truth }}"}
谢谢,
解决方案
设法通过将自身安装为角色来解决此问题。像这样:
ansible-galaxy install git+git@github.com:<user>/ansible-role-networking.git
然后将角色添加到test.yml
.
推荐阅读
- user-interface - 如何在 Flutter 的 NestedScrollView 中设置 SliverAppBar 的最小高度
- python - 当主线程调用 sys.exit() 时,守护线程是否被杀死?
- maven - 为什么我需要在 jar 文件中查找未包含在 maven pom.xml 文件中的类?
- php - Cron 命令在给定的 url 上运行控制器功能?
- javascript - 如何确保命令序列按顺序运行(jQuery 中的超时问题 - Qualtrics)
- java - 如何在 webssoprofileoption 中将 forceAuthn 设置为 true?
- c# - 如何使用 IEqualityComparer 加快多个字段的比较?
- webpack - 带有popper的引导工具提示无法通过webpack工作
- macos - 无法启动为 App Store 提交上传的 MAC 应用程序
- python - 圆形 Python 列表项,每个项都有不同的小数位