Ansible-创建未使用磁盘的列表

Ansible-创建未使用磁盘的列表,ansible,Ansible,我正在尝试从收集事实创建未使用磁盘的列表 - key | search ("sd") with_dict: "{{ ansible_devices }}" 但它只显示一个磁盘,就像服务器有两个未使用的磁盘sdb和sdc一样,它只显示sdb。如何修改代码以包含所有未使用的磁盘。按照您的方式,set\u fact等于迭代中的“当前”项,这可能就是为什么您在最终结果中只看到一个磁盘。您需要将磁盘设置为元素列表,并将当前项附加到该列表中。键。您可以使用以下语法: s

我正在尝试从收集事实创建未使用磁盘的列表

-

           key | search ("sd")

     with_dict: "{{ ansible_devices }}"

但它只显示一个磁盘,就像服务器有两个未使用的磁盘sdb和sdc一样,它只显示sdb。如何修改代码以包含所有未使用的磁盘。

按照您的方式,
set\u fact
等于迭代中的“当前”项,这可能就是为什么您在最终结果中只看到一个磁盘。您需要将
磁盘
设置为元素列表,并将当前
项附加到该列表中。键
。您可以使用以下语法:

set_fact:
   disks: "{{ disks|default([]) + ['/dev/{{item.key}}'] }}"
要了解在
with_dict
子句的循环中有多少个结果,可以尝试执行
调试任务:

- name: Print disk result

     debug:
        msg: "/dev/{{item.key}}"

     when:
     - not item.value.partitions
     - not item.value.holders
     - not item.value.links.ids
     - item.key | search ("sd")

     with_dict: "{{ ansible_devices }}"
(缩进可能需要修复,我只是从您的代码中复制)


希望对您有所帮助

谢谢您的回复,我使用了上面提到的代码来打印磁盘结果,它显示了多个磁盘,但当我使用set_fact和msg来显示变量时,它显示如下:-

“磁盘”:[
“/dev/sdc”,
“/dev/{{item.key}}”
]

-名称:打印磁盘结果
设定事实:
磁盘:{{disks}默认([])+['/dev/{{{item.key}}']}
什么时候:
-不是item.value.partitions
-不是物品。价值。持有者
-不是item.value.links.ids
-item.key |搜索(“sd”)
使用命令“{{ansible\u devices}”
-调试:var=磁盘

Hey,感谢您的回复,其显示结果如下:=>{“disks”:[“/dev/sdc”,“/dev/{{{item.key}}”]这是一个非常奇怪的输出…你能发布一下
ansible\u devices
变量在你的设置中是什么样子的吗?你可以编辑你的问题并添加这些信息。请解释你的答案。这对未来的读者也有帮助。