ansible-ceph/roles/ceph-facts/tasks/devices.yml
2026-04-06 07:08:17 +03:00

82 lines
3.1 KiB
YAML

---
- name: Resolve devices
when:
- devices is defined
- not osd_auto_discovery | default(False) | bool
block:
- name: Resolve device link(s)
ansible.builtin.command: readlink -f {{ item }}
changed_when: false
check_mode: false
with_items: "{{ devices }}"
register: devices_prepare_canonicalize
- name: Set_fact build devices from resolved symlinks
ansible.builtin.set_fact:
devices: "{{ devices_prepare_canonicalize.results | map(attribute='stdout') | reject('search', '/dev/disk') | list | unique }}"
- name: Resolve dedicated_device
when:
- dedicated_devices is defined
- not osd_auto_discovery | default(False) | bool
block:
- name: Resolve dedicated_device link(s)
ansible.builtin.command: readlink -f {{ item }}
changed_when: false
check_mode: false
with_items: "{{ dedicated_devices }}"
register: dedicated_devices_prepare_canonicalize
- name: Set_fact build dedicated_devices from resolved symlinks
ansible.builtin.set_fact:
dedicated_devices: "{{ dedicated_devices_prepare_canonicalize.results | map(attribute='stdout') | reject('search', '/dev/disk') | list | unique }}"
- name: Resolve bluestore_wal_device
when:
- bluestore_wal_devices is defined
- not osd_auto_discovery | default(False) | bool
block:
- name: Resolve bluestore_wal_device link(s)
ansible.builtin.command: readlink -f {{ item }}
changed_when: false
check_mode: false
with_items: "{{ bluestore_wal_devices }}"
register: bluestore_wal_devices_prepare_canonicalize
- name: Set_fact build bluestore_wal_devices from resolved symlinks
ansible.builtin.set_fact:
bluestore_wal_devices: "{{ bluestore_wal_devices_prepare_canonicalize.results | map(attribute='stdout') | reject('search', '/dev/disk') | list | unique }}"
- name: Collect existed devices
vars:
device: "{{ item.key | regex_replace('^', '/dev/') }}"
ansible.builtin.command: test -b {{ device }}
changed_when: false
ignore_errors: true
loop: "{{ ansible_facts['devices'] | dict2items }}"
when:
- osd_auto_discovery | default(False) | bool
- ansible_facts['devices'] is defined
- item.value.removable == "0"
- item.value.sectors != "0"
- item.value.partitions|count == 0
- item.value.holders|count == 0
- ansible_facts['mounts'] | selectattr('device', 'equalto', device) | list | length == 0
- item.key is not match osd_auto_discovery_exclude
- device not in dedicated_devices | default([])
- device not in bluestore_wal_devices | default([])
- device not in (lvm_volumes | default([]) | map(attribute='data') | list)
register: devices_check
- name: Set_fact devices generate device list when osd_auto_discovery
vars:
device: "{{ item.item.key | regex_replace('^', '/dev/') }}"
ansible.builtin.set_fact:
devices: "{{ devices | default([]) | union([device]) }}"
loop: "{{ devices_check.results }}"
when:
- devices_check is defined
- devices_check is not skipped
- not item.skipped | default(false)
- not item.failed | default(false)