次のコードは'dict object' has no attribute 'failed'
エラー結果の属性 "失敗":Ansibleシェルモジュールが認識しない、失敗したタスク
シェルモジュール:
- hosts: localhost
tasks:
- shell: "not_available_command"
register: module_result
until: module_result.failed == false
retries: 2
delay: 1
結果:
fatal: [localhost]: FAILED! => {
"failed": true,
"msg": "The conditional check 'module_result.failed == false' failed. The error was: error while evaluating conditional (module_result.failed == false): 'dict object' has no attribute 'failed'"
を}
しかし、私のようにuntil
の構文を変更する場合:
until: module_result.stderr == ""
それが正常に再試行します。デバッグには-vvv
オプションを付けて実行しました。
fatal: [localhost]: FAILED! => {
"attempts": 2,
"changed": true,
"cmd": "not_available_command",
"delta": "0:00:00.010290",
"end": "2017-09-25 17:28:14.078318",
"failed": true,
"invocation": {
"module_args": {
"_raw_params": "not_available_command",
"_uses_shell": true,
"chdir": null,
"creates": null,
"executable": null,
"removes": null,
"warn": true
}
},
"rc": 127,
"start": "2017-09-25 17:28:14.068028",
"stderr": "/bin/sh: 1: not_available_command: not found",
"stderr_lines": [
"/bin/sh: 1: not_available_command: not found"
],
"stdout": "",
"stdout_lines": []
}
両方failed
又はstderr
属性しかしfailed
存在している見られるように認識されないuntil
構文を定義しようとしたとき:2回の再試行の後にそれが期待どおりに失敗しました。
のは、別のモジュールを試してみましょう:
GET_URLモジュール:
- hosts: localhost
tasks:
- get_url:
url: "http://unavailable_file_on_the_web.txt"
dest: "{{ playbook_dir }}"
register: module_result
until: module_result.failed == false
retries: 2
delay: 1
この時間until: module_result.failed == false
構文作品。 'failed'
属性が認識されます。
モジュール上でこの問題を特定するにはどうすればよいですか?それはバグのようですか?
あなたはどのようなバージョンをお使いですか?この動作はホスト上では再現できません。 –
私は 'ansible 2.3.0.0'を使用します – Akif