2017-11-09 8 views
0

リストのdictsのリストからリストを作成しようとしていますが、失敗しています。例データYAML リストのdictsのAniable/jinja2リスト

R1

にすべてのピアのリストを取得しようとすると、R1は唯一のピアとしてR2とR3を持っているよう

--- 
conn: 
- id: asd 
    peers: 
    - name: r1 
    - name: r2 
- id: dsa 
    peers: 
    - name: r1 
    - name: r3 
- id: sad 
    peers: 
    - name: r2 
    - name: r4 

出力は[r2,r3]でなければなりません。どのようにしてこのリストを安全な仕事から得ることができますか?

答えて

1

あなたはJMESPathを探索することもできます。

--- 
- hosts: localhost 
    gather_facts: no 
    vars: 
    conn: 
     - id: asd 
     peers: 
     - name: r1 
     - name: r2 
     - id: dsa 
     peers: 
     - name: r1 
     - name: r3 
     - id: sad 
     peers: 
     - name: r2 
     - name: r4 
    tasks: 
    - debug: 
     msg: "{{ conn | json_query(qry) }}" 
     vars: 
     qry: '[*].{p:peers[].name} | [?contains(p,`r1`)].p[] | [[email protected]!=`r1`]' 

、リストを平らにし、効果的に結果としてR1のみのピアを残す任意のr1アイテムをドロップ、pの要素としてr1を持っているアイテムのみを選択し、pとしてpeers[].nameを選択。

+0

確かに印象的です。それはjmespathが不可能な先住民族ではないことが必要です。これは、それほど清潔な作業ソリューションではありません。ありがとう。私は誰かがコアの安全なモジュールしか必要としない別のモジュールを思い付くまで、これを実行します。 – Ossar

関連する問題