2016-07-26 14 views
0

Ich habe eine Datei mit Benutzernamen und einigen anderen Details (jede Zeile ist Komma getrennt) wie unten.Ansible Schleife durch Datei

user1,group1,sudoer-y,<public key> 
user2,group1,sudoer-n,<public key> 

Ich muß durch diese Datei in meinem Textbuch aktualisieren, um die Schleife und sudoers Datei für jede Zeile (je nachdem, ob das Flag J oder N).

Als ersten Schritt möchte ich jede Spalte separat ausdrucken. Hier ist der Befehl, den ich verwende:

Aber das druckt wirklich die ganze Datei im XML-Format. Gibt es einen einfacheren Weg, dies zu tun?

Dank Arani

+0

Ich bin nicht wirklich sicher, ich folge, was Sie tun, aber 'stdoutlines' (anstatt' stdout') wird Ihnen eine iterierbare Liste von jeder Zeile in der registrierten Variable statt einer Zeile getrennte Zeichenfolge geben, so könnte mo sein wiederverwendung. – ydaetskcoR

Antwort

2

Iterate über Linien und Split-Artikel:

- name: get file lines 
    shell: cat /tmp/aws_user_detail.tmp 
    register: res 

- debug: msg="user={{ item.split(',')[0] }}" 
    when: item.split(',')[2] == "sudoer-y" 
    with_items: "{{ res.stdout_lines }}" 

Oder nur grep Namen, benötigen, wenn Sie Benutzernamen nur mit sudoer Flagge:

- name: get users with flag 
    shell: grep 'sudoer-y' /tmp/aws_user_detail.tmp | cut -d',' -f1 
    register: res 

- debug: msg="user={{ item }}" 
    with_items: "{{ res.stdout_lines }}"