Я пытаюсь узнать статус процесса 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 поток для подробностей.