我正在尝试获取 foo.txt 的内容,但是当我进行查找时,新行将被替换为
\n
。如何避免这种情况并按原样获取文件内容?
foo.txt:
This is dummy1
This is dummy2
This is dummy3
This is dummy4
This is dummy5
剧本:
- name: Gather info on backend servers
hosts: localhost
gather_facts: no
tasks:
- ansible.builtin.debug:
msg: "{{ lookup('ansible.builtin.file', '/tmp/foo.txt') }}"
output of the playbook:
TASK [ansible.builtin.debug] *******************************************************************************************************************************
ok: [localhost] => {
"msg": "This is dummy1\nThis is dummy2\nThis is dummy3\nThis is dummy4\nThis is dummy5"
}
I want ansible to print as below:
TASK [ansible.builtin.debug] *******************************************************************************************************************************
ok: [localhost] => {
"msg": "This is dummy1
This is dummy2
This is dummy3
This is dummy4
This is dummy5"
}
据我所知,这目前是不可能的,尽管在 this thread on serverfault 中有一些关于如何解决这个问题的建议。
恕我直言,最简单的解决方案是:
- ansible.builtin.debug:
msg: "{{ lookup('ansible.builtin.file', '/tmp/foo.txt').split('\n') }}"
我明白你感兴趣的问题
如何避免这种情况并按原样通过调试消息打印内容?
一个最小的示例剧本
---
- hosts: localhost
become: false
gather_facts: false
tasks:
- debug:
msg: "{{ lookup('ansible.builtin.file', 'foo.txt') }}"
将导致输出
TASK [debug] *****
ok: [localhost] =>
msg: |-
This is dummy1
This is dummy2
This is dummy3
This is dummy4
This is dummy5
ansible.cfg
中stdout_callback
在示例中设置为yaml
.
stdout_callback = yaml
community.general.diy
回调 - 自定义输出 和有关 仅从 Ansible 剧本返回
msg:
的示例。