Ansible:如何将字符串附加到列表的每个值
我试图在ansible中给列表的每个值添加一个字符串,因此基本上我尝试使用.whl文件脱机安装多个pip模块 我在/opt/tmp/path中有两个文件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
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在没有任何警告的情况下也运行良好,非常感谢