Como redirecionar a saída do registro para hosts com falha em ansible usando assert ou qualquer outra forma

Como redirecionar a saída do registro para hosts com falha em ansible usando assert ou qualquer outra forma
- 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 :).

informação relacionada