2016-06-15 7 views
-1

ich brauche nicht zu bekommen: - Echo mit dem valueOf Debuggen den ‚Standort‘ - überprüfen, ob der ‚Standort‘ bestimmtes Wort enthält (ganzes Wort ist in Ordnung)ansible den Wert aus der Liste der dicts

basierend auf diese Ausgabe durch die xml module erzeugt:

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

Haben Sie etwas versucht, oder nehmen Sie nur an, dass ansible nicht den Wert aus der Liste der Diktate bekommt? – shaps

+0

@shapsIch habe bereits versucht, mit apps.matches funktioniert gut, aber kann nicht in die Anwendung gelangen. app.matches ["application"] funktioniert nicht –

+0

Nein, das wird nicht funktionieren, wie du im Titel sagtest, es ist eine Liste von dict, daher musst du darauf zugreifen als 'app.matches [0] [ "Antrag"] – shaps

Antwort

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

die Variable in der Task-Register, dann eine neue Aufgabe mit einer when-Klausel erstellen.

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

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

EDIT: Von Kommentare, da Streichhölzer ein Array ist, möchten Sie vielleicht durch das Array zu durchlaufen.