通过 ansible 检查 python 版本,结果出错

通过 ansible 检查 python 版本,结果出错

你好,我正在使用 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",

相关内容