- name: Check the VolumeGroup has 5gb space
assert:
that: ansible_lvm.vgs.VG00.free_g|int >= 5
fail_msg: 'VG has no free space'
success_msg: "{{ ansible_lvm.vgs.rhel.free_g }}"
register: vg00
- name: Line in file
shell: echo -e "{{ ansible_fqdn }},VG_FREE=0" >> /tmp/failed.txt
delegate_to: localhost
when: "'FATAL' in vg00"
Мне нужно только перенаправить неисправные хосты с помощью условия when, но это не работает. Любое другое условие поможет
решение1
Похоже, вы пытаетесь использовать факты, которых не существует (я проверил в ansible 2.9.12).
Итак, мой способ заставить это работать был бы таким:
---
- name: answer stack overflow
hosts: all
become: yes
tasks:
- name: Get VolumeGroup "mirror" free space in GB
shell: vgs --units G|grep mirror|awk '{print $NF}'|tr -d 'G'
register: vg_free
- name: report your findings
shell: echo {{ ansible_hostname }} has {{ vg_free.stdout }} GB free on VG mirror >> /tmp/hosts_with_vg_less_than_5GB_free_report.txt
delegate_to: localhost
when: {{ vg_free.stdout | int }} < 5
Не рекомендуется широко использовать модуль оболочки, так как существует идемпотентность (https://en.wikipedia.org/wiki/Идемпотентность) труднодостижимо, но для целей отчетности - почему бы и нет :) .