ceph-validate: fail if there's no ipaddr available in monitor_address_block subnet

When using monitor_address_block to determine the ip address of the
monitor node, we need an ip address available in that cidr to be
present in the ansible facts (ansible_all_ipv[46]_addresses).
Currently we don't check if there's an ip address available during
the ceph-validate role.
As a result, the ceph-config role fails due to an empty list during
ceph.conf template creation but the error isn't explicit.

TASK [ceph-config : generate ceph.conf configuration file] *****
fatal: [0]: FAILED! => {"msg": "No first item, sequence was empty."}

With this patch we will fail before the ceph deployment with an
explicit failure message.

Resolves: rhbz#1673687

Signed-off-by: Dimitri Savineau <dsavinea@redhat.com>
pull/3726/head
Dimitri Savineau 2019-03-14 16:22:01 -04:00 committed by mergify[bot]
parent a7b1e35a16
commit 5c39735be5
2 changed files with 14 additions and 0 deletions

View File

@ -0,0 +1,6 @@
---
- name: "fail if {{ inventory_hostname }} does not have any {{ ip_version }} address on {{ monitor_address_block }}"
fail:
msg: "{{ inventory_hostname }} does not have any {{ ip_version }} address on {{ monitor_address_block }}"
when:
- hostvars[inventory_hostname]['ansible_all_' + ip_version + '_addresses'] | ipaddr(hostvars[inventory_hostname]['monitor_address_block']) | length == 0

View File

@ -70,6 +70,14 @@
- monitor_address == "0.0.0.0"
- monitor_address_block == "subnet"
- name: include check_ipaddr_mon.yml
include_tasks: check_ipaddr_mon.yml
when:
- mon_group_name in group_names
- monitor_interface == "interface"
- monitor_address == "0.0.0.0"
- monitor_address_block != "subnet"
- name: include check_eth_rgw.yml
include_tasks: check_eth_rgw.yml
when: