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
查找更具可移植性,因为如果需要,它可以在远程主机上工作。查找始终在本地运行,而查找则在目标主机上运行