我必须使用ansible安装位于特定目录中的许多rpm。现在,我正在使用如下语法:
- name: install uploaded rpms
command: rpm -ivh /tmp/*.rpm
Run Code Online (Sandbox Code Playgroud)
我想使用yum模块来执行此操作,但不知道如何告诉它在目录中安装所有rpm(而不是指定每个文件的名称)。
有什么建议么?
提前致谢
小智 7
我认为最好的解决方案如下:
- name: Find all rpm files in /tmp folder
find:
paths: "/tmp"
patterns: "*.rpm"
register: rpm_files
- name: Setting rpm_list
set_fact:
rpm_list: "{{ rpm_files.files | map(attribute='path') | list}}"
- name: installing the rpm files
yum:
name: "{{rpm_list}}"
state: present
Run Code Online (Sandbox Code Playgroud)
循环遍历文件可能会导致 Yum Lock 问题。所以这更好更高效,因为我们不必遍历所有文件,而是将文件路径列表传递给 yum 模块。
您可以尝试一下吗(我没有测试过):
- name: Finding RPM files
find:
paths: "/tmp"
patterns: "*.rpm"
register: rpm_result
- name: Install RPM
yum:
name: "{{ item.path }}"
state: present
with_items: "{{ rpm_result.files }}"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9705 次 |
最近记录: |