- 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"
Ich muss nur die ausgefallenen Hosts umleiten, indem ich die Bedingung „When“ verwende, aber das funktioniert nicht. Jede andere Bedingung hilft
Antwort1
Es scheint, als würden Sie versuchen, Fakten zu verwenden, die nicht existieren (ich habe es in Ansible 2.9.12 überprüft).
Ich könnte das also folgendermaßen zum Laufen bringen:
---
- 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
Die exzessive Nutzung von Shell-Modulen wird nicht empfohlen, da Idempotenz (https://en.wikipedia.org/wiki/Idempotenz) ist schwer zu erreichen, aber für Berichtszwecke – warum nicht :).