Python ansible pip:在虚拟环境中递归安装控制盘
要安装文件夹Python ansible pip:在虚拟环境中递归安装控制盘,python,ansible,python-wheel,Python,Ansible,Python Wheel,要安装文件夹/tmp/prod\u wheel/中的所有控制盘,请执行以下操作: $ cat playbook_install.yml --- - hosts: localhost tasks: - name: Install all wheels pip: name: "{{ query('fileglob', '/tmp/prod_wheel/*.whl') }}" virtualenv: "~/venv" virtu
/tmp/prod\u wheel/
中的所有控制盘,请执行以下操作:
$ cat playbook_install.yml
---
- hosts: localhost
tasks:
- name: Install all wheels
pip:
name: "{{ query('fileglob', '/tmp/prod_wheel/*.whl') }}"
virtualenv: "~/venv"
virtualenv_command: /usr/bin/python3 -m venv ~/venv
它工作得很好
现在我遇到了这样一种情况,轮子位于我不知道名称的文件夹中,例如/tmp/data/*/*.whl
文件glob不全局文件夹(仅文件)
我使用find来捕捉轮子,但是在我的virtualenv中安装轮子的更紧凑的方式是什么呢
$ echo playbook_catch_wheels.yml
---
- hosts: localhost
tasks:
- name: Find to catch recursively all wheels
find:
paths: /vagrant/vagrant/*/dist/
patterns: '*.whl'
您只需使用从查找结果中提取路径列表,并将其传递到
pip
,就像您以前使用fileglob
查找所做的那样
想当然地,您的实际find
任务会返回您期望的结果(我仍然添加了recurse
,因为您提到了它),以下两个任务应该满足您的要求:
---
-主机:本地主机
任务:
-名称:查找以递归方式捕获所有控制盘
查找:
路径:/vagrant/vagrant/*/dist/
模式:'*.whl'
递归:对
注册号码:wheel_search
-名称:安装所有找到的控制盘
pip:
名称:“{wheel_search.files | map(attribute='path')| list}”
虚拟病毒:“~/venv”
virtualenv_命令:/usr/bin/python3-m venv~/venv
请注意,find
解决方案比fileglob
查找更具可移植性,因为如果需要,它可以在远程主机上工作。查找始终在本地运行,而查找则在目标主机上运行