Description of problem: Let's assume we have the inventory: [mons] ceph-mon0 monitor_address=192.168.1.10 ceph-mon1 monitor_interface=eth1 ceph-mon2 monitor_address_block=192.168.1.0/24 the ceph.conf generation task will end up with: fatal: [ceph-mon0]: FAILED! => {} MSG: 'ansible.vars.hostvars.HostVarsVars object' has no attribute u'ansible_interface' the reason is that it will assume monitor_address_block isn't defined even on ceph-mon2 because looking for monitor_address_block instead of hostvars[host]['monitor_address_block'], therefore it enters in the condition as default value: {%- else -%} {% set interface = 'ansible_' + (monitor_interface | replace('-', '_')) %} {% if ip_version == 'ipv4' -%} {{ hostvars[host][interface][ip_version]['address'] }} {%- elif ip_version == 'ipv6' -%} [{{ hostvars[host][interface][ip_version][0]['address'] }}] {%- endif %} {%- endif %} monitor_interface is set with default value 'interface' so the interface variable is built with 'ansible_' + 'interface'. It makes ansible throwing a confusing message about 'ansible_interface'. Steps to Reproduce: 1. Mix multiple monitor_address / monitor_address_block / monitor_interface on different mons in your inventory 2. Launch the deployment Actual results: ceph.conf generation task fails Expected results: ceph.conf is properly generated on all nodes.
Present in https://github.com/ceph/ceph-ansible/releases/tag/v3.1.8
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHBA-2018:3530