2017-06-16 2 views
-1

ANSIBLEを使用:urlからjson応答を取得していますが、応答をプルーニングしていますが、特定のキー/値を印刷できません。 (jsonの応答を参照してください)私のスクリプトで私はサービスを渡すだろう、私はタグの下でのみサービスの特定のバージョンだけを印刷したい。たとえば、私はabcをパラメータとして渡して、それからそのタグの下にバージョンを印刷したいと思います。私はjsonクエリフィルタを試みたが、これを得ることができませんでした。jsonからの応答uri - どのようにjsonのキーと値を抽出し、不可能なjsonクエリフィルタを使用してそれらを検証するのですか?

- name: Get url response 
    uri: 
    url: http://localhost:8500/myurl... 
    return_content: yes 
    register: json_response 

- name: print json_response 
    debug: 
    var: json_response 

- name: print the response 
    set_fact: 
    msg: "{{ json_response | from_json| json_query('Tags['build=*')}}" 

私のjson応答はこのようになります。

"json": { 
     "abc": { 
      "Tags": [ 
       "version=3.5" 
      ] 
     }, 
     "xyz": { 
      "Tags": [ 
       "version=4.6.2" 
      ] 
     }, 
     "asd": { 
      "Tags": [ 
       "version=9.1.2" 
      ] 
     } 
} 

ご協力いただければ幸いです。コメントから

+0

私はhttps://serverfault.com/questions/722852/how-to-check-the-json-response-from-a-uri-request-with-ansibleは役に立ち – Vij

+1

唯一の事についてのかもしれないと思いますここでは 'json_response.json'に' json_query'フィルタを適用する必要があります。 JMESPathの表現については、http://jmespath.org/で表現を理解するのに時間を費やしてください。 –

+0

@ ConstantinSuvorovありがとうございます。このリンクhttp://jmespath.org/tutorial.htmlは非常に役に立ちます。今私は正確な値に到達することができます。 – ryan1506

答えて

0

回答:

ansibleについての唯一の事はここにあなたがjson_response.jsonjson_queryフィルタを適用する必要があるということです。 JMESPath式については、表現自体を理解するためにjmespath.orgに時間を費やしてください。

関連する問題