Bug 1372477

Summary: [ceph-ansible] : rolling_update fails in task 'waiting for the monitor to join the quorum' with error 'UndefinedError: 'mon_host' is undefined'
Product: Red Hat Storage Console Reporter: Rachana Patel <racpatel>
Component: ceph-ansibleAssignee: seb
Status: CLOSED WONTFIX QA Contact: ceph-qe-bugs <ceph-qe-bugs>
Severity: high Docs Contact:
Priority: unspecified    
Version: 2CC: adeza, aschoen, ceph-eng-bugs, nthomas, sankarshan, seb
Target Milestone: ---   
Target Release: 3   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2016-09-02 15:14:05 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:

Description Rachana Patel 2016-09-01 21:17:30 UTC
Description of problem:
=======================
While doing rolling update of cluster having 1 MON node and 1 OSD node it failed  in task 'waiting for the monitor to join the quorum' with error 'UndefinedError: 'mon_host' is undefined'


TASK: [waiting for the monitor to join the quorum...] ************************* 
fatal: [magna078 -> {{ mon_host }}] => Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/ansible/runner/__init__.py", line 586, in _executor
    exec_rc = self._executor_internal(host, new_stdin)
  File "/usr/lib/python2.7/site-packages/ansible/runner/__init__.py", line 789, in _executor_internal
    return self._executor_internal_inner(host, self.module_name, self.module_args, inject, port, complex_args=complex_args)
  File "/usr/lib/python2.7/site-packages/ansible/runner/__init__.py", line 927, in _executor_internal_inner
    delegate = self._compute_delegate(actual_pass, inject)
  File "/usr/lib/python2.7/site-packages/ansible/runner/__init__.py", line 363, in _compute_delegate
    fail_on_undefined=True
  File "/usr/lib/python2.7/site-packages/ansible/utils/template.py", line 124, in template
    varname = template_from_string(basedir, varname, templatevars, fail_on_undefined)
  File "/usr/lib/python2.7/site-packages/ansible/utils/template.py", line 382, in template_from_string
    res = jinja2.utils.concat(rf)
  File "<template>", line 8, in root
  File "/usr/lib/python2.7/site-packages/jinja2/runtime.py", line 485, in _fail_with_undefined_error
    raise self._undefined_exception(hint)
UndefinedError: 'mon_host' is undefined



Version-Release number of selected component (if applicable):
==============================================================
update from 10.2.2-38.el7cp.x86_64 to 10.2.2-39.el7cp.x86_64


How reproducible:
=================
always


Steps to Reproduce:
===================
1. Create a cluster via ceph-ansible having 1 MON, 1 OSD and 1 RGW node (10.2.2-38.el7cp.x86_64)
2. create repo fie on all node which points to 10.2.2-39.el7cp.x86_64 bits
3. use rolling_update.yml to update all nodes

Actual results:
===============

TASK: [waiting for the monitor to join the quorum...] ************************* 
fatal: [magna078 -> {{ mon_host }}] => Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/ansible/runner/__init__.py", line 586, in _executor
    exec_rc = self._executor_internal(host, new_stdin)
  File "/usr/lib/python2.7/site-packages/ansible/runner/__init__.py", line 789, in _executor_internal
    return self._executor_internal_inner(host, self.module_name, self.module_args, inject, port, complex_args=complex_args)
  File "/usr/lib/python2.7/site-packages/ansible/runner/__init__.py", line 927, in _executor_internal_inner
    delegate = self._compute_delegate(actual_pass, inject)
  File "/usr/lib/python2.7/site-packages/ansible/runner/__init__.py", line 363, in _compute_delegate
    fail_on_undefined=True
  File "/usr/lib/python2.7/site-packages/ansible/utils/template.py", line 124, in template
    varname = template_from_string(basedir, varname, templatevars, fail_on_undefined)
  File "/usr/lib/python2.7/site-packages/ansible/utils/template.py", line 382, in template_from_string
    res = jinja2.utils.concat(rf)
  File "<template>", line 8, in root
  File "/usr/lib/python2.7/site-packages/jinja2/runtime.py", line 485, in _fail_with_undefined_error
    raise self._undefined_exception(hint)
UndefinedError: 'mon_host' is undefined


FATAL: all hosts have already failed -- aborting

PLAY RECAP ******************************************************************** 
           to retry, use: --limit @/root/rolling_update.retry

localhost                  : ok=1    changed=0    unreachable=0    failed=0   
magna078                   : ok=154  changed=8    unreachable=1    failed=0   
magna084                   : ok=5    changed=1    unreachable=0    failed=0   
magna085                   : ok=5    changed=1    unreachable=0    failed=0 


Expected results:
==================
It should update all node


Additional info:

Comment 4 seb 2016-09-02 15:13:42 UTC
You are testing this on a non-supported configuration, no one runs a single monitor. So during your testing you must have 3 monitors to validate this.
I'm closing this as this is invalid.