]> git.apps.os.sepia.ceph.com Git - ceph-ansible.git/commitdiff
ceph-validate: fail if there's no ipaddr available in monitor_address_block subnet
authorDimitri Savineau <dsavinea@redhat.com>
Thu, 14 Mar 2019 20:22:01 +0000 (16:22 -0400)
committermergify[bot] <mergify[bot]@users.noreply.github.com>
Mon, 18 Mar 2019 16:35:36 +0000 (16:35 +0000)
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>
roles/ceph-validate/tasks/check_ipaddr_mon.yml [new file with mode: 0644]
roles/ceph-validate/tasks/main.yml

diff --git a/roles/ceph-validate/tasks/check_ipaddr_mon.yml b/roles/ceph-validate/tasks/check_ipaddr_mon.yml
new file mode 100644 (file)
index 0000000..e5cb107
--- /dev/null
@@ -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
index b7cea208258c57b34bd269ecbfa1d15eedc91e46..935bd560b29de49bfa613429553db3436e102e9a 100644 (file)
     - 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: