我在做一些看似微不足道的事情时遇到了严重的麻烦,我想我可能走错了路。
场景非常简单,我有一个 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 }}”,因为我无法循环循环。我可能选择了一种非常愚蠢的方法....任何帮助将不胜感激。
注册到单个变量info。
使用子元素来迭代磁盘和分区。例如
给
以下可用于在单个任务中清除所有现有分区:
除了它是一个命令之外,这里的优点是分区删除过程在调用
parted info
可能已经(故意)以意想不到的方式更改的设备时不会因故障而脆弱parted
。一种这样的情况是,如果通过设备(通过 virtio-blk)到 VM 并将其块大小设置为其本机值,这可能与 QEMU 的默认值(512 字节)不同。