web-dev-qa-db-fra.com

ansible: vérifier que registered_var.stderr n'est pas vide

Comment puis-je tester que stderr est non vide ::

- name: Check script
  Shell: . {{ venv_name }}/bin/activate && myscritp.py
  args:
    chdir: "{{ home }}"
  Sudo_user: "{{ user }}"
  register: test_myscript

- debug: msg='myscritp is Ok'
  when: not test_myscript.stderr

Donc, s'il n'y a pas d'erreur, je pourrais lire:

  TASK: [deploy | debug msg='critp is Ok] *******
  ok: [vagrant] => {
      "msg": "myscritp is Ok"
  }

Et une erreur FATAL dans cas stderr n'est pas vide.

7
user3313834

Vous pouvez vérifier la chaîne vide (lorsque stderr est vide)

- name: Check script
  Shell: . {{ venv_name }}/bin/activate && myscritp.py
  args:
    chdir: "{{ home }}"
  Sudo_user: "{{ user }}"
  register: test_myscript

- debug: msg='myscritp is Ok'
  when: test_myscript.stderr == ""

Si vous voulez vérifier l’échec:

- debug: msg='myscritp has error: {{test_myscript.stderr}}'
  when: test_myscript.stderr != ""

Regardez aussi cette question stackoverflow question

16
Nasr

Option sans avertissement Ansible Galaxy est

when: test_myscript.stderr | length > 0
2
Vladimir Botka