我正在尝试编写一个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?
答案 0 :(得分:1)
您应该使用with_fileglob ins_items,例如
- name: Install RPMs
yum: name="{{item}}" state=present
with_fileglob:
- "{{ artifacts }}"