--- - name: find device used for operating system command: findmnt -v -n -T / -o SOURCE changed_when: false register: root_device - name: resolve root_device command: "readlink -f {{ root_device.stdout }}" changed_when: false register: _root_device - name: set_fact root_device set_fact: root_device: "{{ _root_device.stdout }}" - name: lvm_volumes variable's tasks related when: - lvm_volumes is defined - lvm_volumes | length > 0 block: - name: resolve devices in lvm_volumes command: "readlink -f {{ item.data }}" changed_when: false register: _lvm_volumes_data_devices with_items: "{{ lvm_volumes }}" when: - item.data_vg is undefined - name: set_fact lvm_volumes_data_devices set_fact: lvm_volumes_data_devices: "{{ lvm_volumes_data_devices | default([]) + [item.stdout] }}" with_items: "{{ _lvm_volumes_data_devices.results }}" when: - item.skipped is undefined - name: fail if root_device is passed in lvm_volumes or devices fail: msg: "{{ root_device }} found in either lvm_volumes or devices variable" when: root_device in lvm_volumes_data_devices | default([]) or root_device in devices | default([]) - name: check devices are block devices block: - name: get devices information parted: device: "{{ item }}" unit: MiB register: devices_parted failed_when: False with_items: - "{{ devices | default([]) }}" - "{{ lvm_volumes_data_devices | default([]) }}" - name: fail if one of the devices is not a device fail: msg: "{{ item.item }} is not a block special file!" when: item.rc is defined with_items: "{{ devices_parted.results }}" - name: fail when gpt header found on osd devices fail: msg: "{{ item.disk.dev }} has gpt header, please remove it." with_items: "{{ devices_parted.results }}" when: - item.skipped is undefined - item.disk.table == 'gpt' - item.partitions | length == 0