--- - name: Include check_system.yml ansible.builtin.include_tasks: check_system.yml - name: Validate repository variables in non-containerized scenario ansible.builtin.include_tasks: check_repository.yml when: not containerized_deployment | bool - name: Validate osd_objectstore ansible.builtin.fail: msg: "osd_objectstore must be 'bluestore''" when: osd_objectstore not in ['bluestore'] - name: Validate radosgw network configuration ansible.builtin.fail: msg: "Either radosgw_address, radosgw_address_block or radosgw_interface must be provided" when: - rgw_group_name in group_names - radosgw_address == 'x.x.x.x' - radosgw_address_block == 'subnet' - radosgw_interface == 'interface' - name: Validate osd nodes when: osd_group_name in group_names block: - name: Validate lvm osd scenario ansible.builtin.fail: msg: 'devices or lvm_volumes must be defined for lvm osd scenario' when: - not osd_auto_discovery | default(false) | bool - devices is undefined - lvm_volumes is undefined - name: Validate bluestore lvm osd scenario ansible.builtin.fail: msg: 'data key must be defined in lvm_volumes' when: - osd_objectstore == 'bluestore' - not osd_auto_discovery | default(false) | bool - lvm_volumes is defined - lvm_volumes | length > 0 - item.data is undefined with_items: '{{ lvm_volumes }}' - name: Debian based systems tasks when: ansible_facts['os_family'] == 'Debian' block: - name: Fail if local scenario is enabled on debian ansible.builtin.fail: msg: "'local' installation scenario not supported on Debian systems" when: ceph_origin == 'local' - name: Fail if rhcs repository is enabled on debian ansible.builtin.fail: msg: "RHCS isn't supported anymore on Debian distribution" when: - ceph_origin == 'repository' - ceph_repository == 'rhcs' # SUSE/openSUSE Leap only supports the following: # - ceph_origin == 'distro' # - ceph_origin == 'repository' and ceph_repository == 'obs' - name: SUSE/openSUSE Leap based system tasks when: ansible_facts['os_family'] == 'Suse' block: - name: Check ceph_origin definition on SUSE/openSUSE Leap ansible.builtin.fail: msg: "Unsupported installation method origin:{{ ceph_origin }}" when: ceph_origin not in ['distro', 'repository'] - name: Check ceph_repository definition on SUSE/openSUSE Leap ansible.builtin.fail: msg: "Unsupported installation method origin:{{ ceph_origin }} repo:{{ ceph_repository }}' only valid combination is ceph_origin == 'repository' and ceph_repository == 'obs'" when: - ceph_origin == 'repository' - ceph_repository != 'obs' - name: Validate ntp daemon type ansible.builtin.fail: msg: "ntp_daemon_type must be one of chronyd, ntpd, or timesyncd" when: - ntp_service_enabled | bool - ntp_daemon_type not in ['chronyd', 'ntpd', 'timesyncd'] # Since NTPd can not be installed on Atomic... - name: Abort if ntp_daemon_type is ntpd on Atomic ansible.builtin.fail: msg: installation can't happen on Atomic and ntpd needs to be installed when: - is_atomic | default(False) | bool - ansible_facts['os_family'] == 'RedHat' - ntp_daemon_type == 'ntpd' - name: Include check_devices.yml ansible.builtin.include_tasks: check_devices.yml when: - osd_group_name in group_names - not osd_auto_discovery | default(False) | bool - name: Include check_eth_rgw.yml ansible.builtin.include_tasks: check_eth_rgw.yml when: - rgw_group_name in group_names - radosgw_interface != "dummy" - radosgw_address == "x.x.x.x" - radosgw_address_block == "subnet" - name: Include check_rgw_pools.yml ansible.builtin.include_tasks: check_rgw_pools.yml when: - inventory_hostname in groups.get(rgw_group_name, []) - rgw_create_pools is defined - name: Include check_rbdmirror.yml ansible.builtin.include_tasks: check_rbdmirror.yml when: - rbdmirror_group_name in group_names - ceph_rbd_mirror_configure | default(false) | bool - name: Monitoring related tasks when: dashboard_enabled | bool block: - name: Fail if monitoring group doesn't exist ansible.builtin.fail: msg: "you must add a monitoring group and add at least one node." when: groups[monitoring_group_name] is undefined - name: Fail when monitoring doesn't contain at least one node. ansible.builtin.fail: msg: "you must add at least one node in the monitoring hosts group" when: groups[monitoring_group_name] | length < 1 - name: Fail when dashboard_admin_password and/or grafana_admin_password are not set ansible.builtin.fail: msg: "you must set dashboard_admin_password and grafana_admin_password." when: - dashboard_admin_password is undefined or grafana_admin_password is undefined - name: Validate container registry credentials ansible.builtin.fail: msg: 'ceph_docker_registry_username and/or ceph_docker_registry_password variables need to be set' when: - ceph_docker_registry_auth | bool - (ceph_docker_registry_username is not defined or ceph_docker_registry_password is not defined) or (ceph_docker_registry_username | string | length == 0 or ceph_docker_registry_password | string | length == 0) - name: Validate container service and container package ansible.builtin.fail: msg: 'both container_package_name and container_service_name should be defined' when: - (container_package_name is undefined and container_service_name is defined) or (container_package_name is defined and container_service_name is undefined) - name: Validate openstack_keys key format ansible.builtin.fail: msg: '{{ item.name }} key format invalid' with_items: '{{ openstack_keys }}' when: - osd_group_name in group_names - openstack_keys is defined - openstack_keys | length > 0 - item.key is defined - item.key is not match("^[a-zA-Z0-9+/]{38}==$") - name: Validate clients keys key format ansible.builtin.fail: msg: '{{ item.name }} key format invalid' with_items: '{{ keys }}' when: - client_group_name in group_names - keys is defined - keys | length > 0 - item.key is defined - item.key is not match("^[a-zA-Z0-9+/]{38}==$") - name: Validate openstack_keys caps ansible.builtin.fail: msg: '{{ item.name }} key has no caps defined' with_items: '{{ openstack_keys }}' when: - osd_group_name in group_names - openstack_keys is defined - openstack_keys | length > 0 - item.caps is not defined - name: Validate clients keys caps ansible.builtin.fail: msg: '{{ item.name }} key has no caps defined' with_items: '{{ keys }}' when: - client_group_name in group_names - keys is defined - keys | length > 0 - item.caps is not defined - name: Check virtual_ips is defined ansible.builtin.fail: msg: "virtual_ips is not defined." when: - rgwloadbalancer_group_name in group_names - groups[rgwloadbalancer_group_name] | length > 0 - virtual_ips is not defined - name: Validate virtual_ips length ansible.builtin.fail: msg: "There are more virual_ips defined than rgwloadbalancer nodes" when: - rgwloadbalancer_group_name in group_names - (virtual_ips | length) > (groups[rgwloadbalancer_group_name] | length)