我想在ansible中实现这个逻辑:如果可用,安装一个命名的yum包,如果启用的repos中不存在包,则不会失败,只有在安装失败时才会失败。
答案 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","")) != ""'