2016-05-19 7 views
0

Ich habe folgende Textbuch:ansible Variablen: Können Sie sie dynamisch erstellen und dann durchlaufen?

--- 
- hosts: lxc_hosts 
    name: get list of lxc containers on lxc host 
    tasks: 
    - name: get list of containers 
    shell: > 
     lxc-ls | awk -vRS= -vFS="\n" '//' 
    register: containers 
    - debug: msg="{{containers.stdout}}" 

Die Debug-Werte wie folgt zurückgibt:

TASK [debug] ******************************************************************* 
ok: [10.1.1.1] => { 
    "msg": "container1\ncontainer2\ncontainer3" 
} 
ok: [10.1.1.2] => { 
    "msg": "container22\ncontainer23\ncontainer24" 
} 

Ich bin der Hoffnung, einen Weg, es gibt die Ergebnisse ich so wieder in eine Liste zu analysieren:

container1 
container2 
container3 

und/oder

container22 
container23 
container24 

Und dann würde ich gerne in der Lage sein, diese Listen durchzulaufen und ein weiteres Spiel gegen sie auszuführen. Etwas wie dieses:

shell: lxc-attach --name={{item}} 
register: attach_results 
with_items: <list of containers> 

Wie würde ich darüber gehen?

+0

Ist die Frage nicht beantworten, aber haben Sie am LXC Modul sah stattdessen Shell zu verwenden? http://docs.ansible.com/ansible/lxc_container_module.html – smiller171

+0

Ich denke, die beste Lösung ist, das kleine Filter-Plugin zu schreiben –

+0

@arbabnazar ich weiß nicht, was Sie damit meinen. Ich beginne gerade mit ansible. kannst du mich auf einen doc/link hinweisen, der das erklärt? – Happydevdays

Antwort

0

Dies ist, was Arbeit endete:

- debug: msg="{{containers.stdout}}" 
    with_items: 
    - "{{ containers.stdout.split(',')|select('match', 'container*')|list }}" 
+0

Ich kenne dein genaues Szenario nicht, bin aber froh, dass mein Beispiel dir hilft, dein Ziel zu erreichen. –

0

können Sie versuchen, mit diesem:

- debug: 
     msg: "{{ containers.stdout | select("match", ". container*") | list }}" 
+0

können Sie mir ein bisschen mehr Kontext um die Aussage geben, damit ich weiß, wo ich es setzen soll? Vielen Dank! – Happydevdays

+0

Verwenden Sie es einfach mit der Debug-Aufgabe und finden Sie heraus, dass es Ihnen das gewünschte Ergebnis gibt, dann können Sie es setzen, wo immer Sie wollen. Ich habe die Frage –

+0

leider nicht aktualisiert, das funktioniert nicht. Sie müssen die Ausgabe zuerst teilen ... und dann die Auswahl gegen das versuchen. – Happydevdays