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