アサートやその他の方法を使用して、Ansibleで障害が発生したホストのレジスタ出力をリダイレクトする方法

アサートやその他の方法を使用して、Ansibleで障害が発生したホストのレジスタ出力をリダイレクトする方法
- 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/べき等性) は実現が難しいですが、レポート作成の目的であれば、実現してもいいのではないでしょうか :) 。

関連情報