Можно ли получить каждый диск или LUN sd{a,b,c,d}, на котором была создана точка подключения «/main»? не lvm или vg, а сам диск. Ansible или скрипт

#python #linux #bash #ansible #centos

Вопрос:

Поэтому мне нужна помощь в этом, я хочу найти каждый многолучевой диск или LUN /main,расположенный на sd-карте[a,b,c, d], а затем поместить результаты в файл.

 sda                               8:0    0 893.3G  0 disk
├─sda1                            8:1    0   300M  0 part  /boot/efi
├─sda2                            8:2    0     1G  0 part  /boot
└─sda3                            8:3    0   892G  0 part
  ├─VolGroup00-root             253:0    0   888G  0 lvm   /
  └─VolGroup00-swap             253:1    0     4G  0 lvm   [SWAP]
sdb                               8:16   0     3T  0 disk
└─NS2FPPRMDB08_MongoDB_Data     253:2    0     3T  0 mpath
  └─mongo_data_vg-mongo_data_lv 253:3    0     3T  0 lvm   /main
sdc                               8:32   0     3T  0 disk
└─NS2FPPRMDB08_MongoDB_Data     253:2    0     3T  0 mpath
  └─mongo_data_vg-mongo_data_lv 253:3    0     3T  0 lvm   /main
sdd                               8:48   0     3T  0 disk
└─NS2FPPRMDB08_MongoDB_Data     253:2    0     3T  0 mpath
  └─mongo_data_vg-mongo_data_lv 253:3    0     3T  0 lvm   /main
sde                               8:64   0     3T  0 disk
└─NS2FPPRMDB08_MongoDB_Data     253:2    0     3T  0 mpath
  └─mongo_data_vg-mongo_data_lv 253:3    0     3T  0 lvm   /main
 

Я сделал это с Ansible, но показывает только одно устройство, если для /main используется более 1 устройства .

 ---
  - name: 
    hosts: dba
    vars:
        dev_name: '{{ hostvars[inventory_hostname]["facter_mountpoints"]["/data"]["device"]| basename}}'
    tasks:
      - name: get device name
        set_fact:
          device_name: "{{ item.key }}"
        no_log: false
        with_dict: "{{ ansible_devices }}"
        when:  " dev_name in  item.value.holders"

      - name: show all values for selected device name
        debug:
          var: "{{ item }}"
        with_items:
           ansible_devices[device_name]

      - name: show only device name
        debug: var=device_name
 

Ответ №1:

lsblk -lpo mountpoint,pkname,kname,name,path | grep '/main '

запустите lsblk -lpO и решите, какие поля вы хотите вывести.