Ansible循环文件

时间:2016-07-26 18:23:16

标签: ansible ansible-playbook

我有一个文件,其中包含用户名和其他一些细节(每行以逗号分隔),如下所示。

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

我需要在我的playbook中循环浏览此文件并更新每行的sudoers文件(取决于标志是y还是n)。

作为第一步,我想分别打印出每一列。这是我正在使用的命令:

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

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

但这确实以yml格式打印出整个文件。有没有更简单的方法呢?

由于 Arani

1 个答案:

答案 0 :(得分: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 }}"