Debugging 使用Ansible时访问标准输出线
假设我在安装了varDebugging 使用Ansible时访问标准输出线,debugging,ansible,Debugging,Ansible,假设我在安装了varsonarqube\u plugins\u的目录中使用shell任务“注册”了文件,当我使用 - name: Debug debug: var: sonarqube_plugins_installed.results 例如,我明白了 TASK [sonarqube : Debug] ************************************************************************ ok: [sonarqube] =
sonarqube\u plugins\u的目录中使用shell任务“注册”了文件,当我使用
- name: Debug
debug:
var: sonarqube_plugins_installed.results
例如,我明白了
TASK [sonarqube : Debug] ************************************************************************
ok: [sonarqube] => {
"sonarqube_plugins_installed.results": [
{
"ansible_loop_var": "item",
"changed": true,
"cmd": "ls /opt/sonarqube/sonarqube-6.7/extensions/plugins/sonar-build-breaker-plugin-*.jar",
"delta": "0:00:00.003748",
"end": "2019-09-18 04:04:54.355667",
"failed": false,
"invocation": {
"module_args": {
"_raw_params": "ls /opt/sonarqube/sonarqube-6.7/extensions/plugins/sonar-build-breaker-plugin-*.jar",
"_uses_shell": true,
"argv": null,
"chdir": null,
"creates": null,
"executable": null,
"removes": null,
"stdin": null,
"stdin_add_newline": true,
"strip_empty_ends": true,
"warn": true
}
},
"item": "build_breaker",
"rc": 0,
"start": "2019-09-18 04:04:54.351919",
"stderr": "",
"stderr_lines": [],
"stdout": "/opt/sonarqube/sonarqube-6.7/extensions/plugins/sonar-build-breaker-plugin-2.2.jar",
"stdout_lines": [
"/opt/sonarqube/sonarqube-6.7/extensions/plugins/sonar-build-breaker-plugin-2.2.jar"
]
}
]
}
如何在另一个任务中访问例如stdout
?在另一个任务中,我想使用和\u items
处理结果中的每个项目,并输出标准输出
如何做到这一点?以下应该是一个良好的开端:
- name: show stdout for each result
debug:
var: item.stdout
loop: "{{ sonarqube_plugins_installed.results }}"
正如您所猜测的,这将贯穿结果
列表中的每个元素
如果要同时打印所有行,另一种方法是使用相关表达式处理数据结构,以仅提取所需信息
- name: show sdtout list for all results
debug:
msg: "{{ sonarqube_plugins_installed | json_query('results[].stdout[]') }}"
您还可以将两者结合起来,只在简单的标准输出列表上循环
- name: show stdout for each result
debug:
var: item
loop: "{{ sonarqube_plugins_installed | json_query('results[].stdout[]') }}"
您还可以使用过滤器提取所需的属性:
- name: show stdout list of all results
debug:
msg: "{{ sonarqube_plugins_installed.results | map(attribute='stdout') | list }}"
我相信您会在和文档中找到其他可以使用的解决方案sonarqube_插件如何安装。结果[0]。stdout?@itiic这只会得到列表中第一个元素的stdout
。虽然示例列表只有一个元素,但OP表示他希望处理结果中的每个项目