2016-06-15 6 views
-1

のリストから値を取得していない私がする必要がある: - 「場所」 をのvalueOfをデバッグ使用してエコー - 「場所は」特定の単語が含まれているかどうかを確認Ansibleがdicts

に基づいて(全体の言葉は結構です) xml moduleによって生成され、この出力:

ok: [127.0.0.1] => { 
    "apps": { 
     "actions": { 
      "ensure": "present", 
      "namespaces": {}, 
      "xpath": "/server/application" 
     }, 
     "changed": false, 
     "count": 1, 
     "matches": [ 
      { 
       "application": { 
        "context-root": "helloworld", 
        "location": "text.zip", 
       } 
      } 
     ], 
     "msg": 1 
    } 
} 
/
+0

あなたは何かを試しましたか、またはあなたはただのdictsのリストから価値を得ることができないと仮定していますか? – shaps

+0

@shaps私はすでに試してみましたが、apps.matchesはうまく動作しますが、アプリケーションの内部には入りません。 app.matches ["application"]は動作しません –

+0

いいえ、それは動作しません。あなたがタイトルで言ったように、これはdictのリストなので、 'app.matches [0] [ 'application'] ' – shaps

答えて

2
- debug: 
    var: item.application 
    when: item.application.location == "foobar" 
    with_items: "{{ apps.matches }}" 
3

が、その後、タスクで変数を登録するとき句で新しいタスクを作成します。

- Existing XML task 
    xml: (skipping) 
    register: myvar 

    - Check for filename 
    debug: var=item.application.location 
    with_items: myvar.apps.matches 

EDIT:コメントから、試合が配列であるため、あなたは配列を反復することをお勧めします。