У меня серьезные проблемы с тем, чтобы сделать что-то, что кажется очень тривиальным, наверное, я ошибаюсь.
Сценарий довольно прост, у меня есть 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"