你好,我正在使用 ansible 任务检查 python 的版本,但是我得到的是 stderr 变量中的输出值而不是 stdout。
这是我的检查 pthon 版本的 ansible 任务。
---
- shell: "python --version"
register: python_installed
以下是该任务的输出:
changed: [172.17.0.3] => {
"changed": true,
"cmd": "python --version",
"delta": "0:00:00.259578",
"end": "2017-06-30 03:43:44.341772",
"invocation": {
"module_args": {
"_raw_params": "python --version",
"_uses_shell": true,
"chdir": null,
"creates": null,
"executable": null,
"removes": null,
"warn": true
}
},
"rc": 0,
"start": "2017-06-30 03:43:44.082194",
"stderr": "Python 2.6.6",
"stderr_lines": [
"Python 2.6.6"
],
"stdout": "",
"stdout_lines": []
}
我尝试在可执行文件参数中添加 python 路径,但也失败了。我还尝试使用命令模块而不是 shell 模块。仍然失败
答案1
我在这里没有看到错误。命令已成功执行(rc=0
)。
Python 的-v
开关应该将版本号写入 stderr。从来源:
fprintf(stderr, "Python %s\n", PY_VERSION);
如果(由于某些特定原因)您需要在 stdout 中看到它,请使用描述符重定向:
- shell: python --version 2>&1
答案2
请注意:
Python 版本已经由设置模块并可以通过ansible_python_version
ansible -m setup localhost | grep ansible_python_version "ansible_python_version": "3.6.1",