Verificando a versão do python por meio de resultados ansible em erro

1

Oi eu estou verificando a versão do python usando ansible task No entanto estou recebendo valor de saída na variável stderr em vez de stdout.

Aqui está minha tarefa ansiosa para verificar a versão do pthon.

---
- shell: "python --version"
  register: python_installed

Aqui está a saída da tarefa:

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": []
}

Eu tentei adicionar o caminho do python no argumento executável, ele também falhou. Eu também tentei usar o módulo de comando insted do módulo shell. Ainda falhando

    
por MMA 30.06.2017 / 05:49

2 respostas

3

Não vejo nenhum erro aqui. O comando foi executado com sucesso ( rc=0 ).

A opção -v do Python deve gravar o número da versão em stderr. De fonte :

fprintf(stderr, "Python %s\n", PY_VERSION);

Se (por algum motivo específico) você precisar vê-lo no stdout, use o redirecionamento do descritor:

- shell: python --version 2>&1
    
por 30.06.2017 / 07:54
5

Apenas como uma nota:

A versão Python já está reunida pelo setup_module e pode ser acessada por ansible_python_version

ansible -m setup localhost | grep ansible_python_version
       "ansible_python_version": "3.6.1",
    
por 30.06.2017 / 08:16

Tags