无法产生一个有用的输出换行符ansible壳lineinfile模块输出



下面的任务,当我在shell上运行find命令时,我得到了预期的输出。当我在注册变量后调试它时,我也会得到每行一个的输出。

当我运行我写的这些任务时,不管我把换行符放在哪里,我都会得到一堆乱七八糟的输出。

ansible.builtin.shell:
cmd: find / -xdev ( -perm -4000 -o -perm -2000 ) -type f | awk '{print "-a always,exit -F path=" $1 " -F perm=x -F auid>=1000 -F auid!=4294967295 -k privileged" }'
register: ps
- name: Put them into the rules file
ansible.builtin.lineinfile:
path: "/etc/audit/rules.d/audit.rules"
insertafter: EOF
line: "{{ ps.stdout_lines }}" 

我已经尝试在引号内外的find末尾添加换行符,但不知何故它被弄混了。

什么是修复?为什么不能正常工作呢?

stdout是原始输出,而stdout_lines"{ ... }"转换为字符串(不带换行符)的数组。

- name: find privileged files
ansible.builtin.shell:
cmd: find / -xdev ( -perm -4000 -o -perm -2000 ) -type f | awk '{print "-a always,exit -F path=" $1 " -F perm=x -F auid>=1000 -F auid!=4294967295 -k privileged" }'
register: ps
- name: Put them into the rules file
ansible.builtin.blockinfile:
path: "/etc/audit/rules.d/audit.rules"
insertafter: EOF
state: present
block: "{{ ps.stdout }}"

感谢所有回复的人,我解决了这个问题。张贴修改后的代码。

最新更新