如果可以使用ansible,我如何实现安装yum包?

时间:2017-02-28 14:52:15

标签: ansible

我想在ansible中实现这个逻辑:如果可用,安装一个命名的yum包,如果启用的repos中不存在包,则不会失败,只有在安装失败时才会失败。

1 个答案:

答案 0 :(得分:1)

首先进行搜索,只有在返回任何结果时才安装:

- hosts: host
  tasks:
    - name: Search for package
      yum:
        list: <package_name>
      register: package_list

    - name: Install package
      yum:
        name: <package_name>
        state: present
      become: yes
      when: 'package_list.results | length != 0'

<package_name>替换为您感兴趣的包。

以下是failed_when的替代方案,但它非常hacky,因为它依赖于yum返回的消息来匹配:

- hosts: host
  tasks:
    - name: Install package
      yum:
        name: <package_name>
        state: present
      register: result
      become: yes
      failed_when: '(result.msg | regex_replace("No package matching .* found available, installed or updated","")) != ""'