2017-02-28 389 views
1

我想实现这个逻辑:如果可用,请安装一个名为yum的软件包,如果该软件包在启用的回收站中不存在,则不会失败,只有在安装失败时才会失败。如何使用ansible来实现安装yum软件包?

+0

我想你可以使用'failed_when'语句来实现这一点。 –

回答

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替代,但它是相当因为它依赖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","")) != ""' 
相关问题