使用Ansible使用regex或glob文件名安装本地RPM

时间:2017-05-09 16:08:02

标签: ansible

我正在尝试编写一个ansible playbook,它在Jenkins作业被复制到一个已知位置后为我安装了一些RPM。问题是,我不知道如何在没有硬编码的情况下安装RPM的名称。

以下是我现在所拥有的:

- hosts: localhost
  roles:
  - { role: some_role, artifacts: "{{ rpm_path }}/prefix_.*.rpm" }

在这种情况下,rpm_path类似于:

"/home/jenkins/workspace/rpm_install/artifacts"

此示例中调用的角色处理yum install部分:

- name: Install RPMs
  yum: name={{item}} state=present
  with_items:
    - "{{ artifacts }}"

我宁愿不必硬编码RPM名称,因为他们来自Jenkins并且他们总是不同。但是有没有办法通过yum模块,或者当我调用正则表达式或glob可以解释的角色时,完整路径(包括rpm名称)被移交给yum?

1 个答案:

答案 0 :(得分:1)

您应该使用with_fileglob ins_items,例如

- name: Install RPMs
  yum: name="{{item}}" state=present
  with_fileglob:
    - "{{ artifacts }}"