ceph-ansible/roles/ceph-validate/tasks/check_devices.yml

83 lines
2.5 KiB
YAML
Raw Normal View History

---
- 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: devices variable's tasks related
when:
- devices is defined
- devices | length > 0
block:
- name: resolve devices in devices
command: "readlink -f {{ item }}"
changed_when: false
register: devices_resolved
with_items: "{{ devices }}"
- name: set_fact devices_resolved
set_fact:
_devices: "{{ _devices | default([]) + [item.stdout] }}"
with_items: "{{ devices_resolved.results }}"
- 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