JSONレスポンスを取得するためにWebサイトにURIリクエストを行うAnsibleタスクがあります。ネストされたJSON変数が定義されている場合はAnsibleに何かを行い、定義されていない場合は別のことを行います。
- name: Get JSON from the Interwebs
uri: url="http://whatever.com/jsonresponse" return_content=yes
register: json_response
- name: Write nested JSON variable to disk
copy: content={{json_response.json.nested1.nested2}} dest="/tmp/foo.txt"
ignore_errors
は、Jinjaテンプレート内のネストされたデータ構造の未定義値をチェックするためではなく、タスクのコマンドが失敗した場合にのみ機能することに注意してください。したがって、json_response.json.nested1.nested2
定義されていない場合、このタスクはignore_errors=yes
設定されていても失敗します。
/tmp/foo.txt
リクエストが失敗した場合、またはリクエストに適切なネストされた値が定義されていない場合に、このプレイブックを取得してデフォルト値を保存するにはどうすればよいですか?
$key
に、応答にフィールドがない場合に何が起こるかを尋ねていdefault
ます。