- 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"
Preciso que apenas os hosts com falha sejam redirecionados usando a condição when, mas não está funcionando. Qualquer condição diferente ajudará
Responder1
Parece que você está tentando usar fatos que não existem (verifiquei no ansible 2.9.12).
Então, minha maneira de fazer isso funcionar seria:
---
- 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
O uso extensivo do módulo shell não é recomendado como Idempotência (https://en.wikipedia.org/wiki/Idempotence) é difícil de conseguir, mas para fins de relatório - por que não :).