So leiten Sie die Registerausgabe für ausgefallene Hosts in Ansible mithilfe von Assert oder auf andere Weise um

So leiten Sie die Registerausgabe für ausgefallene Hosts in Ansible mithilfe von Assert oder auf andere Weise um
- 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 :).

verwandte Informationen