2016-07-26 1 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

나는 아니에요 정말로 당신이하고있는 것을 따라 가야하지만 stdoutlines (stdout보다는)는 라인으로 구분 된 문자열이 아닌 등록 된 변수에있는 모든 라인의 반복 가능한리스트를 제공 할 것이므로 mo 다시 사용하십시오. – 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 }}" 

또는 그렙 이름, 당신은 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 }}" 
관련 문제