From 235d1b3f557dcd9164d392050382398e1cda7084 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Han?= Date: Mon, 23 Jul 2018 16:02:43 +0200 Subject: [PATCH] validate: add checks for interfaces MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Check if the interface provided: * exists in the gathered facts (thus on the system) * is active * has an IP address (depending on ip_version ) Closes: https://bugzilla.redhat.com/show_bug.cgi?id=1600227 Signed-off-by: Sébastien Han --- roles/ceph-validate/tasks/check_eth_mon.yml | 26 +++++++++++++++++++++ roles/ceph-validate/tasks/check_eth_rgw.yml | 26 +++++++++++++++++++++ roles/ceph-validate/tasks/main.yml | 18 +++++++++++++- 3 files changed, 69 insertions(+), 1 deletion(-) create mode 100644 roles/ceph-validate/tasks/check_eth_mon.yml create mode 100644 roles/ceph-validate/tasks/check_eth_rgw.yml diff --git a/roles/ceph-validate/tasks/check_eth_mon.yml b/roles/ceph-validate/tasks/check_eth_mon.yml new file mode 100644 index 000000000..cb800c290 --- /dev/null +++ b/roles/ceph-validate/tasks/check_eth_mon.yml @@ -0,0 +1,26 @@ +--- +- name: "fail if {{ monitor_interface }} does not exist on {{ inventory_hostname }}" + fail: + msg: "{{ monitor_interface }} does not exist on {{ inventory_hostname }}" + when: + - monitor_interface not in ansible_interfaces + +- name: "fail if {{ monitor_interface }} is not active on {{ inventory_hostname }}" + fail: + msg: "{{ monitor_interface }} is not active on {{ inventory_hostname }}" + when: + - not hostvars[inventory_hostname]['ansible_' + monitor_interface]['active'] + +- name: "fail if {{ monitor_interface }} does not have any ip v4 address on {{ inventory_hostname }}" + fail: + msg: "{{ monitor_interface }} does not have any IPv4 address on {{ inventory_hostname }}" + when: + - ip_version == "ipv4" + - hostvars[inventory_hostname]['ansible_' + monitor_interface]['ipv4'] is not defined + +- name: "fail if {{ monitor_interface }} does not have any ip v6 address on {{ inventory_hostname }}" + fail: + msg: "{{ monitor_interface }} does not have any IPv6 address on {{ inventory_hostname }}" + when: + - ip_version == "ipv6" + - hostvars[inventory_hostname]['ansible_' + monitor_interface]['ipv6'] is not defined \ No newline at end of file diff --git a/roles/ceph-validate/tasks/check_eth_rgw.yml b/roles/ceph-validate/tasks/check_eth_rgw.yml new file mode 100644 index 000000000..987eb8ebe --- /dev/null +++ b/roles/ceph-validate/tasks/check_eth_rgw.yml @@ -0,0 +1,26 @@ +--- +- name: "fail if {{ radosgw_interface }} does not exist on {{ inventory_hostname }}" + fail: + msg: "{{ radosgw_interface }} does not exist on {{ inventory_hostname }}" + when: + - radosgw_interface not in ansible_interfaces + +- name: "fail if {{ radosgw_interface }} is not active on {{ inventory_hostname }}" + fail: + msg: "{{ radosgw_interface }} is not active on {{ inventory_hostname }}" + when: + - hostvars[inventory_hostname]['ansible_' + radosgw_interface]['active'] == "false" + +- name: "fail if {{ radosgw_interface }} does not have any ip v4 address on {{ inventory_hostname }}" + fail: + msg: "{{ radosgw_interface }} does not have any IPv4 address on {{ inventory_hostname }}" + when: + - ip_version == "ipv4" + - hostvars[inventory_hostname]['ansible_' + radosgw_interface]['ipv4'] is not defined + +- name: "fail if {{ radosgw_interface }} does not have any ip v6 address on {{ inventory_hostname }}" + fail: + msg: "{{ radosgw_interface }} does not have any IPv6 address on {{ inventory_hostname }}" + when: + - ip_version == "ipv6" + - hostvars[inventory_hostname]['ansible_' + radosgw_interface]['ipv6'] is not defined \ No newline at end of file diff --git a/roles/ceph-validate/tasks/main.yml b/roles/ceph-validate/tasks/main.yml index f733f4edc..c4b77e74a 100644 --- a/roles/ceph-validate/tasks/main.yml +++ b/roles/ceph-validate/tasks/main.yml @@ -58,4 +58,20 @@ when: - osd_group_name in group_names - not osd_auto_discovery | default(False) - - osd_scenario != "lvm" \ No newline at end of file + - osd_scenario != "lvm" + +- name: include check_eth_mon.yml + include: check_eth_mon.yml + when: + - mon_group_name in group_names + - monitor_interface != "dummy" + - monitor_address == "0.0.0.0" + - monitor_address_block == "subnet" + +- name: include check_eth_rgw.yml + include: check_eth_rgw.yml + when: + - rgw_group_name in group_names + - radosgw_interface != "dummy" + - radosgw_address == "0.0.0.0" + - radosgw_address_block == "subnet" \ No newline at end of file