这两天在部署SONiC VS Testbed的时候,总是被下面这个报错困扰。
TASK [vm_set:Extract VM names from inventory] *********************************
task path: /var/johnar/sonic-mgmt/ansible/roles/vm_set/tasks.main.yml:184
fatal:[STR-ACS-VSERV-01]:FAILED!=>{
‘msg’:"template error while templating string:no filter named 'extract_by_prefix'. String:{{ group_names|extract_by_prefix('server_')}}
}
实际上,filter.py是可以找到的
johnar@9fa161155f72:~/sonic-mgmt/ansible$ cat ansible.cfg | grep filter
filter_plugins = plugins/filter
johnar@9fa161155f72:~/sonic-mgmt/ansible$ ll plugins/filter/
total 24
drwxrwxr-x 2 johnar 1000 4096 Jul 21 09:04 ./
drwxrwxr-x 6 johnar 1000 4096 Jul 21 07:58 ../
-rw-r--r-- 1 johnar 1000 5919 Jul 21 07:58 filters.py
-rw-r--r-- 1 johnar 1000 6078 Jul 21 09:04 filters.pyc
johnar@9fa161155f72:~/sonic-mgmt/ansible$
最后试了一下
johnar@9fa161155f72:~/sonic-mgmt/ansible$ sudo mkdir /etc/ansible
johnar@9fa161155f72:~/sonic-mgmt/ansible$ sudo cp ansible.cfg /etc/ansible/
不再报错!!!!
如果还是不行,那么就修改/etc/ansible/ansible.cfg,将filter路径使用绝对路径
- filter_plugins = plugins/filter
+ filter_plugins = /var/johnar/sonic-mgmt/ansible/plugins/filter