如何避免用 在 Ansible 文件查找中?

问题描述 投票:0回答:2

我正在尝试获取 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"

}
ansible ansible-2.x ansible-inventory ansible-template
2个回答
0
投票

据我所知,这目前是不可能的,尽管在 this thread on serverfault 中有一些关于如何解决这个问题的建议。

恕我直言,最简单的解决方案是:

    - ansible.builtin.debug:
        msg: "{{ lookup('ansible.builtin.file', '/tmp/foo.txt').split('\n') }}"

0
投票

我明白你感兴趣的问题

如何避免这种情况并按原样通过调试消息打印内容?

一个最小的示例剧本

---
- 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:
的示例。

© www.soinside.com 2019 - 2024. All rights reserved.