ansible 将文件内容显示到 stdout

dej*_*dej 8 ansible ansible-playbook

我正在使用ansible 2.9.3,但在尝试显示目标计算机上的文件内容时遇到问题,这是我的剧本:


-
  name: Display content of resolv.conf
  hosts: jenkins
  tasks:
    - name: Display resolv.conf contents
      command: cat resolv.conf chdir=/etc
      register: command_output

    - name: Print to console
      debug: msg = "{{command_output.stdout}}"

Run Code Online (Sandbox Code Playgroud)

我的任务Print to console返回:

TASK [Print to console] ************************************************************************************************************************************************************************************
ok: [jenkins] => {
    "msg": "Hello world!"
}
Run Code Online (Sandbox Code Playgroud)

我想将文件的内容输出到标准输出,我缺少什么?谢谢

ken*_*kas 9

将 放在msg单独的行上,而不是debug像这样并使用 a:而不是=

-
  name: Display content of resolv.conf
  hosts: localhost
  tasks:
    - name: Display resolv.conf contents
      command: cat resolv.conf chdir=/etc
      register: command_output

    - name: Print to console
      debug:
        msg: "{{command_output.stdout}}"
Run Code Online (Sandbox Code Playgroud)

这是我的输出:

任务 [显示 resolv.conf 内容] ********************************************** ****************************************************** ********************************** 更改:[127.0.0.1]

任务 [打印到控制台] ************************************************ ****************************************************** ********************************************** 好的:[127.0.0.1 ] => { "msg": "#\n# macOS 注意\n#\n# DNS 主机名解析、地址\n# 解析或大多数\n# 进程使用的 DNS 查询路由机制不会参考此文件在此系统上。\n#\n# 要查看此系统使用的 DNS 配置,请使用:\n# scutil --dns\n#\n# 另请参见\n# dns-sd(1), scutil(8 )\n#\n# 该文件是自动生成的。\n#\ndomain attlocal.net\nnameserver 192.168.1.254\nnameserver 8.8.8.8\nnameserver 8.8.4.4" }

  • 一个很好的答案。也许添加 `{{ command_output.stdout_lines }}` 是一个想法,以便保留新行而不是打印为 `\n`。 (4认同)