使用Ansible安装多个本地rpm

ago*_*ant 0 yum ansible

我必须使用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 模块。


Arb*_*zar 5

您可以尝试一下吗(我没有测试过):

- 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)