Ansible读取文件和过滤器

时间:2018-10-12 13:27:13

标签: shell file ansible

我有一个txt文件,例如:

test1:group1:real name1
test2:group1:real name2
test3:group2:real name3
test4:group2:real name4

,我想将其用作外壳的Ansible变量。

- shell: test.sh -u {{ username }} -g {{ group }} -r {{ real_name }}

通过查找,我能够从诸如test1:group1:real name1之类的文件中获得一行,但是,我不确定如何分隔名称或组。

file_lines: "{{ lookup('file', './files/user.txt').splitlines() }}"

有办法使它工作吗?

1 个答案:

答案 0 :(得分:1)

您可以使用split将字符串分成一个列表:

- shell: test.sh -u {{ username }} -g {{ group }} -r {{ real_name }}
  loop: "{{ lookup('file', './files/user.txt').splitlines() }}"
  vars:
    params: "{{ item.split(':') }}"
    username: "{{ params[0] }}"
    group: "{{ params[1] }}"
    real_name: "{{ params[2] }}"

当然,您可以将其编写为一行,具体取决于您希望代码的可读性。