2016-06-16 24 views
0

Ich verwende das Yum-Modul in ansible, um alle Aktualisierungen auf einem System aufzulisten. Der Ausgang ist so etwas wie diese:JSON-Ausgabe von Ansible filtern und mit Zeichenfolge vergleichen

results: [ 
    { 
    "name": "rubygem-ffi", 
    "nevra": "0:rubygem-ffi-1.9.10-2.el7.x86_64", 
    "repo": "epel", 
    "epoch": "0", 
    "version": "1.9.10", 
    "release": "2.el7", 
    "yumstate": "available", 
    "arch": "x86_64" 
    } 
    { 
    "name": "some-package", 
    "nevra": "blah", 
    "repo": "epel", 
    "epoch": "0", 
    "version": "6", 
    "release": "6.el7", 
    "yumstate": "available", 
    "arch": "x86_64" 
    } 
] 

und der Code, den ich in Aufgaben verwenden ist:

- name: yum list 
    yum: list=updates 
    register: output 

Was ich will, ist nur eine Debug-Nachricht zu drucken, wenn der Name eines Pakets in dem gefunden wird Json-Ausgabe. Wie folgt aus:

- debug: msg="Found it!" 
    when: [output.I don't know the right filter] == "rubygem-ffi" 

Ich habe versucht, so etwas wie output.results.name oder output.results|map(attribute='name')|list aber sie scheinen nicht

zu arbeiten

Irgendwelche Hinweise?

Antwort

1

Möglicherweise gibt es andere Lösungen. Dieser funktioniert für mich:

- debug: msg='Found It!' 
    when: item.name == 'rubygem-ffi' 
    with_items: output.results