使用 Ansible 2.0 从一个文件夹安装所有包
Install all packages from a folder with Ansible 2.0
我有一个文件夹,用于放置未维护的 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": ""
}
}
我想一定有办法把所有东西放在一起,但我遇到了困难。
我还是不明白你想在这里实现什么。你使用 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}}"
此外,您可以尝试使用 with_fileglob
:
进行循环,而不是使用 file
- pip:
name: {{ item }}
virtualenv: "{{ my_project_venv }}"
with_fileglob:
- "{{ my_project_app }}"/requirements/*.zip
请注意,我没有时间测试这些解决方案中的任何一个,也没有时间询问更多关于您想要实现的目标,但我希望它们能帮助您解决问题。
我有一个文件夹,用于放置未维护的 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": ""
}
}
我想一定有办法把所有东西放在一起,但我遇到了困难。
我还是不明白你想在这里实现什么。你使用 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}}"
此外,您可以尝试使用 with_fileglob
:
file
- pip:
name: {{ item }}
virtualenv: "{{ my_project_venv }}"
with_fileglob:
- "{{ my_project_app }}"/requirements/*.zip
请注意,我没有时间测试这些解决方案中的任何一个,也没有时间询问更多关于您想要实现的目标,但我希望它们能帮助您解决问题。