Ansible:如何将字符串附加到列表的每个值

Ansible:如何将字符串附加到列表的每个值,ansible,jinja2,Ansible,Jinja2,我试图在ansible中给列表的每个值添加一个字符串,因此基本上我尝试使用.whl文件脱机安装多个pip模块 我在/opt/tmp/path中有两个文件 vars: DIR: /opt/ pymongo_modules: - pip-19.1.1-py2.py3-none-any.whl - pymongo-3.8.0-cp27-cp27mu-manylinux1_x86_64.whl - name: Install the latest pymongo package

我试图在ansible中给列表的每个值添加一个字符串,因此基本上我尝试使用.whl文件脱机安装多个pip模块

我在/opt/tmp/path中有两个文件

vars:
 DIR: /opt/
 pymongo_modules:
   - pip-19.1.1-py2.py3-none-any.whl
   - pymongo-3.8.0-cp27-cp27mu-manylinux1_x86_64.whl
 
- name: Install the latest pymongo package 
  pip:
    name: "{{DIR}}/tmp/{{ pymongo_modules | join(' ') }}"
    executable: "{{pip_path}}"
上面的方法不起作用,因为它的格式如下所示

"name": ["/opt/tmp/pip-19.1.1-py2.py3-none-any.whl pymongo-3.8.0-cp27-cp27mu-manylinux1_x86_64.whl"]
我可以用下面的语法实现同样的效果,但是我收到了弃用警告

- name: Install the latest pymongo package 
  pip:
    name: "{{DIR}}/tmp/{{ module }}"
    executable: "{{pip_path}}"
  with_items:
   - "{{ pymongo_modules }}"
  loop_control:
        loop_var: module
期望值:

"name": ["/opt/tmp/pip-19.1.1-py2.py3-none-any.whl", "/opt/tmp/pymongo-3.8.0-cp27-cp27mu-manylinux1_x86_64.whl"]
使用下面的过滤器。顺便说一句,
DIR
变量已经以
/
结尾,因此在
tmp
之前不需要额外的
/

-调试:
msg:“{{item}}”
循环:{{[(DIR+'tmp')]|乘积(pymongo_模块)|映射('join','/'))|列表}
给出:

ok: [localhost] => (item=/opt/tmp/pip-19.1.1-py2.py3-none-any.whl) => {
    "msg": "/opt/tmp/pip-19.1.1-py2.py3-none-any.whl"
}
ok: [localhost] => (item=/opt/tmp/pymongo-3.8.0-cp27-cp27mu-manylinux1_x86_64.whl) => {
    "msg": "/opt/tmp/pymongo-3.8.0-cp27-cp27mu-manylinux1_x86_64.whl"
}

@ceving loop在没有任何警告的情况下也运行良好,非常感谢