Ich möchte diese Logik in Ansible implementieren: Installieren Sie ein benanntes yum-Paket, wenn es verfügbar ist, schlagen Sie nicht fehl, wenn das Paket nicht in aktivierten Repos vorhanden ist, schlagen Sie nur fehl, wenn die Installation fehlschlägt.
Lösung des Problems
Führen Sie einfach zuerst eine Suche durch und installieren Sie sie nur, wenn sie Ergebnisse liefert:
- 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'
durch das Paket ersetzen, <package_name>
an dem Sie interessiert sind.
Hier ist eine Alternative mit failed_when
, aber sie ist ziemlich hackig, da sie sich auf die von yum zurückgegebene Nachricht stützt, um sie abzugleichen:
- 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",""))!= ""'
Keine Kommentare:
Kommentar veröffentlichen