我遇到了来自Jenkins实例的Ansible问题。
错误信息:
失败! => {“msg”:模板字符串时出现模板错误:没有名为'oo_prepend_strings_in_list'的过滤器。字符串:{{item.reg_conf_var}} ='{{item.reg_fact_val | oo_prepend_strings_in_list(item.reg_flag~'')| join( '')}}'“}重试,使用: - limit
代码块:
- name: Set registry params
lineinfile:
dest: /etc/sysconfig/docker
regexp: '^{{ item.reg_conf_var }}=.*$'
line: "{{ item.reg_conf_var }}='{{ item.reg_fact_val | oo_prepend_strings_in_list(item.reg_flag ~ ' ') | join(' ') }}'"
register: set_docker
when: item.reg_fact_val != '' and docker_check.stat.isreg is defined and docker_check.stat.isreg
with_items:
- reg_conf_var: ADD_REGISTRY
reg_fact_val: "{{ docker_additional_registries | default(None, true)}}"
reg_flag: --add-registry
- reg_conf_var: BLOCK_REGISTRY
reg_fact_val: "{{ docker_blocked_registries| default(None, true) }}"
reg_flag: --block-registry
价值示例:
docker_additional_registries=["registry.example.com:5000","registry.access.redhat.com"]
docker_blocked_registries=
oo_prepend_string_in_list
不是ansible提供的过滤器。
如果上述任务在您的本地计算机上正确运行,您已将此过滤器添加到您的安装中,可以直接在您的安装(不推荐)中,也可以在与您的剧本相同的级别或filter_plugins
目录中的特定角色(example in a role)中添加
如果是这种情况,则需要在运行playbook之前将该过滤器部署到工作目录中的jenkins。
如果情况并非如此,并且上述任务无处不在,您需要编辑问题并准确解释您要实现的目标。
编辑我能够在openshift-ansible project的历史中找到对上述过滤器的引用,但我不得不回到类似于2015的东西。此过滤器今天不再存在。你从哪里复制你的线?如果您需要,这里是the reference I could find