我可以从一个主机上收集事实,我可以看到我的硬盘。如何使用ansible_devices变量仅获取驱动器(sda、sdb等)?
我试着做一些类似的事情:
tasks:
- debug: msg={{item.mount}}
with_items: ansible_mounts我尝试了以下调试消息,但我看到的唯一变量只有一个驱动器:
debug: msg={{ hostvars[inventory_hostname]["ansible_devices"] }}。
"ansible_devices": {
"sda": {
"holders": [],
"host": "Serial Attached SCSI controller: LSI Logic / Symbios Logic SAS2008 PCI-Express Fusion-MPT SAS-2 [Falcon] (rev 03)",
"model": "Crucial_CT480M50",
"partitions": {
"sda1": {
"sectors": "2097152",
"sectorsize": 512,
"size": "1.00 GB",
"start": "2048"
},
"sda2": {
"sectors": "8388608",
"sectorsize": 512,
"size": "4.00 GB",
"start": "2099200"
},
"sda3": {
"sectors": "927213568",
"sectorsize": 512,
"size": "442.13 GB",
"start": "10487808"
}
},
"removable": "0",
"rotational": "0",
"scheduler_mode": "cfq",
"sectors": "937703088",
"sectorsize": "4096",
"size": "3.49 TB",
"support_discard": "33553920",
"vendor": "ATA"
},
"sdb": {
"holders": [],
"host": "Serial Attached SCSI controller: LSI Logic / Symbios Logic SAS2008 PCI-Express Fusion-MPT SAS-2 [Falcon] (rev 03)",
"model": "Micron_M500_MTFD",
"partitions": {
"sdb1": {
"sectors": "1875380224",
"sectorsize": 512,
"size": "894.25 GB",
"start": "4096"
}
},
"removable": "0",
"rotational": "0",
"scheduler_mode": "cfq",
"sectors": "1875385008",
"sectorsize": "4096",
"size": "6.99 TB",
"support_discard": "33553920",
"vendor": "ATA"
},发布于 2015-08-22 03:53:36
您在模块参数解析中遇到了问题。试着引用这样的论点:
- debug: msg="{{ hostvars[inventory_hostname]["ansible_devices"] }}"最好使用var而不是msg of module
- debug: var=hostvars[inventory_hostname]["ansible_devices"]为了降低引用的复杂性,我总是建议将模块参数作为一个小块来传递:
- debug:
var: hostvars[inventory_hostname]["ansible_devices"]您可以使用keys()获得一系列设备名称,如@ydaetskcoR中的答案所示:
- debug:
var: hostvars[inventory_hostname]["ansible_devices"].keys()发布于 2015-08-21 18:14:24
您可以看到,ansible_devices是连接到主机上的所有不同设备的字典,因此您可以通过使用.keys()轻松地获得所有设备名称的列表。
此外,在测试以查看变量设置为什么时,您应该使用debug的var而不是msg。
因此,您的调试命令应该是:
debug: var={{ hostvars[inventory_hostname]["ansible_devices"].keys() }}https://stackoverflow.com/questions/32129325
复制相似问题