2017-03-06 6 views
0

これは私の頭を得ることはできませんが、それは些細な問題ではありません。辞書のフィルタリストとAnothing/Jinjaでのプリント値のリスト

私はテンプレートを構築するためにAnsible(と神社のテンプレート)を使用していると私は(ここではJSONとして表示)のような辞書のリストを持っている:

"datacenters": [{ 
    "description": "Main Datacenter", 
    "name": "main" 
}, { 
    "description": "Secondaty Datacenter", 
    "name": "secondary" 
}] 

そして、私は名前でプリントフィルタします説明。出力と

{{ datacenters | selectattr("name", "equalto", "main") | list | first | to_nice_json }} 

:私のテンプレートでは、私はここまで得ることができ

{ 
    "description": "Main Datacenter", 
    "name": "main"   
} 

しかし、私はちょうどdescriptionを取得することはできません。たとえば、私が使用している場合:

{{ datacenters | selectattr("name", "equalto", "main") | list | first | attr("description") }} 

は私が取得:

AnsibleUndefinedVariable: 'unicode object' has no attribute 'description' 

私はエラーをグーグルでこのリンクhttps://github.com/ansible/ansible/issues/19356を発見したが、私は、インベントリから変数をロードしていませんよ。 これを解決する方法はありますか?

答えて

0

グループ化できますパイプの結果:

{{ (datacenters | selectattr("name", "equalto", "main") | list | first).description }} 
+0

私はこれに費やした時間を教えていないといいですね。ありがとう。 – ColOfAbRiX

0

私はそれを有効にしましたが、回避策を使用していましたので、ワンラインソリューションを提供できる人は誰でも歓迎します。

これは回避策です。テンプレートでは私のようなセットを使用:作品

{% set temp = datacenters | selectattr("name", "equalto", "main") | list | first %} 
{{ temp["description"] }} 

を、それが使用して1行で動作しない理由私は表示されませんattr

関連する問題