作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这个问题在这里已经有了答案:
Displaying output of a remote command with Ansible
(3 个回答)
4年前关闭。
社区在 3 个月前审查了是否重新打开此问题并将其关闭:
原始关闭原因未解决
我有以下剧本,Playbook with output
目前没有错误并且运行良好。但是,它不会将输出显示到控制台。我在其他剧本中遇到过这个问题,并通过在剧本中添加以下任务来解决这个问题:
-debug: var=output.stdout_lines
-debug
的情况下将输出打印到控制台的更好方法吗? ?任何ansible引用将不胜感激。
最佳答案
每个 Ansible 任务在运行时都可以将其结果保存到一个变量中。为此,您必须指定将结果保存到哪个变量。使用 register
执行此操作参数,与使用的模块无关。
将结果保存到变量后,您可以稍后在任何后续任务中使用它。因此,例如,如果您想获得特定任务的标准输出,您可以编写以下内容:
---
- hosts: localhost
tasks:
- shell: ls
register: shell_result
- debug:
var: shell_result.stdout_lines
register
告诉 ansible 将模块的响应保存到
shell_result
变量,然后我们使用
debug
模块打印出变量。
PLAY [localhost] ***************************************************************
TASK [command] *****************************************************************
changed: [localhost]
TASK [debug] *******************************************************************
ok: [localhost] => {
"shell_result.stdout_lines": [
"play.yml"
]
}
stdout_lines
是
one of the default fields您可以从模块的响应中得到期望。
stdout
中有任何内容。或
stdout_lines
值,但是
msg
在这种情况下可能会填写字段。还有一些模块,您可能会在非标准变量中找到一些东西,对于这些,您可以尝试查阅模块文档以获取这些非标准返回值。
-v
,
-vvv
和
-vvvv
.例如,当以冗长(
-vvv
)运行剧本时,您会得到:
PLAY [localhost] ***************************************************************
TASK [command] *****************************************************************
(...)
changed: [localhost] => {
"changed": true,
"cmd": "ls",
"delta": "0:00:00.007621",
"end": "2017-02-17 23:04:41.912570",
"invocation": {
"module_args": {
"_raw_params": "ls",
"_uses_shell": true,
"chdir": null,
"creates": null,
"executable": null,
"removes": null,
"warn": true
},
"module_name": "command"
},
"rc": 0,
"start": "2017-02-17 23:04:41.904949",
"stderr": "",
"stdout": "play.retry\nplay.yml",
"stdout_lines": [
"play.retry",
"play.yml"
],
"warnings": []
}
stdout_lines
是可用的,它的内容是我们所期望的。
jenkins_script
的主要问题模块,如果您检查
its documentation ,您可以看到它返回
output
中的输出字段,因此您可能想尝试以下操作:
tasks:
- jenkins_script:
script: (...)
register: jenkins_result
- debug:
var: jenkins_result.output
关于Ansible:如何让输出显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42302522/
我是一名优秀的程序员,十分优秀!