Ansible循环遍历文件

Ansible loop through file

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

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

我需要在我的剧本中遍历这个文件并为每一行更新 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 格式打印出整个文件。有更简单的方法吗?

谢谢 阿拉尼

遍历行并拆分项目:

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