1

我有一个放置未维护的 python 包的文件夹,所以我从 zip 而不是从它们的存储库安装它们。

我正在使用 Ansible 2.0,所以find命令似乎是这样做的方法

到目前为止,我正在执行以下操作:

- name: Install unmaintained dependencies
  pip:
    name: "{{ my_project_app }}/requirements/{{ item }}"
    virtualenv: "{{ my_project_venv }}"
  with_items:
  - django-hijack-2.0.0.zip
  - django-image-cropping-django-19.zip
  - pisa-3.0.33.zip

现在我正在玩find命令

- name: Loading unmaintained dependencies
  find:
   paths: "{{ my_project_app }}/requirements"
   patterns: "*.zip"
  register: unmaintained_dependencies

- debug:
   var: unmaintained_dependencies

如果我运行上面的剧本,我会得到以下输出

ok: [192.168.1.212] => {
    "files_found": {
        "changed": false,
        "examined": 3,
        "files": [
            {
                ...
                "path": "/data/my_project/requirements/pisa-3.0.33.zip",
                ...
            },
            ...
        ],
        "matched": 3,
        "msg": ""
    }
}

我想必须有一种方法可以将所有东西放在一起,但这是我卡住的地方。

4

1 回答 1

1

我仍然不明白你想在这里实现什么.. 你使用find模块只是因为pip模块不安装 zip 文件中的包吗?

对于您的find解决方法,您可以创建一个迭代任务结果的find任务,在需要路径时使用with_items: files_found.files和使用:{{ item.path }}

- name: Install unmaintained dependencies
  pip:
    name: "{{ item.path }}"
    virtualenv: "{{ my_project_venv }}"
  with_items: "{{files_found.files}}"

此外,file您可以尝试使用以下方式创建循环,而不是使用with_fileglob

- pip:
    name: {{ item }}
    virtualenv: "{{ my_project_venv }}"
  with_fileglob:
    - "{{ my_project_app }}"/requirements/*.zip

请注意,我没有时间测试这些解决方案中的任何一个,或者询问更多关于您想要实现的目标,但我希望它们对您的问题有所帮助。

于 2016-04-28T23:10:21.777 回答