web-dev-qa-db-ja.com

登録された変数が空でないことをテストする方法は?

Stderrが空でないことをテストするにはどうすればよいですか::

- 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

エラーがなければ、私は読むことができました::

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

Stderrが空でない場合、FATAlエラーが発生します。

16
user3313834

空の文字列を確認できます(stderrが空の場合)

- 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 == ""

失敗を確認する場合:

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

これも見てください stackoverflow question

24
Nasr

Ansible-lint デフォルトルール を参照してください。以下の条件により、 E602空の文字列と比較しない

when: test_myscript.stderr != ""

正しい構文と「Ansible Galaxy Warning-Free」オプションも

when: test_myscript.stderr | length > 0

追加1。 現在のルールによると

つかいます when: var のではなく when: var != ""(または ''逆にwhen: not varではなく `` when:var == "" `

11
Vladimir Botka