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 }}"
我有一个包含用户名和一些其他详细信息(每行以逗号分隔)的文件,如下所示。
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 }}"