Назад | Перейти на главную страницу

Ansible - удалить все разделы в заданном списке дисков

У меня серьезные проблемы с тем, чтобы сделать что-то, что кажется очень тривиальным, наверное, я ошибаюсь.

Сценарий довольно прост, у меня есть host_group, в которой у меня есть список дисков, например:

диски: "['sdb', 'sdc']"

Затем по задаче у меня есть:

#Read device information (always use unit when probing)
- parted: device=/dev/{{ item }} unit=MiB   register: "{{ item }}_info"   with_items:
    -  "{{ disks }}"

Это прочитает информацию с дисков и сохранит ее в 2 переменных: sdb_info и sdc_info.

Проблема начинается, когда я пытаюсь удалить все разделы на данных дисках, обычная задача для этого:

# Remove all partitions from disk
- parted:
    device: /dev/sdc
    number: "{{ item.num }}"
    state: absent   with_items:
    - "{{ sdc_info.partitions }}"

Это работает нормально, но я не могу адаптировать его для поддержки списка дисков.

Я делаю что-то вроде:

# Remove all partitions from disk
- parted:
    device: /dev/{{ item[0] }}
    number: "{{ item[1].num }}"
    state: absent   with_nested:
    - "{{ disks }}" 
    - "{{ {{ disks }}_info.partitions }}"

Похоже, проблема заключается в "{{{{disks}} _ info.partitions}}", потому что я не могу перебрать цикл. Я, вероятно, выберу очень глупый подход ... любая помощь будет очень признательна.

Зарегистрируйтесь в одной переменной Информация.

- parted:
    device=/dev/{{ item }}
    unit=MiB
    register: info
  with_items: "{{ disks }}"

Вариант обхода дисков и разделов - это зацикливание подэлементов. См. Пример:

- hosts: localhost                                                                           
  vars:                                                                                      
    disks:                                                                                   
      - sda                                                                                  
      - sdc                                                                                  
  tasks:                                                                                     
    - parted:                                                                                
        device: "/dev/{{ item }}"                                                            
        unit: MiB                                                                            
      register: info                                                                         
      loop: "{{ disks }}"                                                                    
    - debug:                                                                                 
        msg: "{{ item.0.disk.dev }} {{ item.1.num }}"                                        
      loop: "{{ info.results|subelements('partitions') }}"

дает:

"msg": "/dev/sda 1"
"msg": "/dev/sda 2"
"msg": "/dev/sda 3"
"msg": "/dev/sda 5"
"msg": "/dev/sdc 1"