Назад | Перейти на главную страницу

Проверка статуса Zookeeper с ошибкой Ansible

Я пытаюсь узнать статус процесса Zookeeper, снимая /path/to/zookeeper/bin/zkServer.sh статус и проверка rc переменная. Но анзибль говорит, что в выходных данных нет переменной rc.

Прилагаю несколько фрагментов:

Здесь вывод показывает rc

changed: [staging] => {
    "changed": true, 
    "cmd": [
        "/path/to/zookeeper/bin/zkServer.sh", 
        "status"
    ], 
    "delta": "0:00:00.222272", 
    "end": "2017-10-17 14:30:23.937679", 
    "invocation": {
        "module_args": {
            "_raw_params": "/path/to/zookeeper/bin/zkServer.sh", 
            "_uses_shell": false, 
            "chdir": null, 
            "creates": null, 
            "executable": null, 
            "removes": null, 
            "warn": true
        }
    }, 
    "rc": 0, 
    "start": "2017-10-17 14:30:23.715407", 
    "stderr": "JMX enabled by default\nUsing config: /path/to/zookeeper/bin/../conf/zoo.cfg", 
    "stderr_lines": [
        "JMX enabled by default", 
        "Using config: /path/to/zookeeper/bin/../conf/zoo.cfg"
    ], 
    "stdout": "Mode: follower", 
    "stdout_lines": [
        "Mode: follower"
    ]
}

И ansible показывает следующие ошибки

fatal: [staging]: FAILED! => {
"failed": true, 
"msg": "The conditional check 'output.rc != 0' failed. The error was: error while evaluating conditional (output.rc != 0): 'dict object' has no attribute 'rc'}

Задача получить выходную переменную:

- name : "Check Zookeeper Service"
  command : /path/to/zookeeper/bin/zkServer.sh status
  register : output

Задача, которая сравнивает переменную rc

- name: "Checking RC"
  fail: msg="Zookeeper Service is DOWN"
  when: output.rc != 0

Подскажите, пожалуйста, в чем может быть проблема?

Спасибо.

Ответ из комментариев:

- Выполняется ли задача "проверить rc" сразу после "check zookeeper"?

- Нет, есть несколько промежуточных задач, которые пропускаются, но они регистрируют одну и ту же переменную.

- Это проблема. register: регистрируйте результат даже для пропущенных задач.

Видеть этот SO поток для подробностей.