ansible 将文件内容显示到stdout

ansible 将文件内容显示到stdout

我正在使用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}}"

我的任务Print to console返回:

TASK [Print to console] ************************************************************************************************************************************************************************************
ok: [jenkins] => {
    "msg": "Hello world!"
}

我想将文件内容输出到标准输出,我遗漏了什么?谢谢

答案1

把 放在与此不同msg的一行,并使用代替:debug:=

-
  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}}"

这是我的输出:

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

任务 [打印到控制台] **************************************************************************************************************************************************** ok:[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" }

答案2

您可以使用ansible.builtin.file查找插件来打印文件的内容,例如

- ansible.builtin.debug:
    var: lookup('ansible.builtin.file', '/etc/resolv.conf')

然而默认情况下,查找插件总是在控制器 (localhost) 上执行(GH-78845),因此你必须先复制文件(例如使用copy模块优先)。

查看文档:https://docs.ansible.com/ansible/latest/collections/ansible/builtin/file_lookup.html

答案3

删除等号“=”周围的空格

debug: msg="{{command_output.stdout}}"

相关内容