2016-07-26 3 views
0

私は以下のように、ユーザー名とその他の細部(各行はカンマ区切り)のファイルを持っています。可能なループスルーファイル

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

私ハンドブックにこのファイルをループする必要があり、(フラグがYまたはNであるか否かに応じて)各ラインのsudoersファイルを更新します。

最初の手順として、各列を別々に印刷したいと考えています。私が使用しているコマンドは次のとおりです:

- name: add to sudoers 
    shell: cat /tmp/aws_user_detail.tmp 
    register: res 

- debug: var=res 
    with_items: [ "{{ res.stdout.split(',')[0] }}" ] 

しかし、これは本当にyml形式でファイル全体を表示します。これを行う簡単な方法はありますか?

おかげラインとスプリット項目以上 Arani

+0

を私はありません実際にあなたがしていることに従っていると確信していますが、(stdoutではなく) 'stdoutlines'では、行で区切られた文字列ではなく、登録された変数のすべての行の繰り返し可能なリストを提供します。再使用。 – ydaetskcoR

答えて

2

反復:のみ

- 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 }}" 

やgrepの名前を、あなたはsudoerフラグを持つだけでユーザー名が必要な場合:

- 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 }}" 
関連する問題