我试图从 ansible fact (ansible_mount) 中提取以下变量值,如下所示。我在目标机器上有很多挂载。我想要的是仅检索 mount 等于 / 的设备键值。即,我想检索 / 挂载点的设备值。我该如何获得它?我根据我的知识尝试了很多方法,但没有成功。
还有一件事,我想确认的是,我该如何检查 ansible_mount 事实中是否有任何挂载键包含值 /user。这是要查看 /usr 是否作为单独的 FS 挂载,还是位于 / FS 下。
"ansible_mounts": [
{
"block_available": 7800291,
"block_size": 4096,
"block_total": 8225358,
"block_used": 425067,
"device": "/dev/mapper/foobar",
"fstype": "xfs",
"inode_available": 16403366,
"inode_total": 16458752,
"inode_used": 55386,
"mount": "/",
"options": "rw,seclabel,relatime,attr2,inode64,noquota",
"size_available": 31949991936,
"size_total": 33691066368,
"uuid": "2ebc82cb-5bc2-4db9-9914-33d65ba350b8"
},
{
"block_available": 44648,
"block_size": 4096,
"block_total": 127145,
"block_used": 82497,
"device": "/dev/sda1",
"fstype": "xfs",
"inode_available": 255595,
"inode_total": 256000,
"inode_used": 405,
"mount": "/boot",
"options": "rw,seclabel,relatime,attr2,inode64,noquota",
"size_available": 182878208,
"size_total": 520785920,
"uuid": "c5f7eaf2-5b70-4f74-8189-a63bb4bee5f8"
},
答案1
您可以尝试使用循环和 when 条件。
显示所有挂载点(您也可以将其用于任何其他操作)
- name: Show only Mount point and device info
debug:
msg: "{{ item.mount }} - {{ item.device }}"
loop: "{{ ansible_facts.mounts }}"
仅显示特定挂载点;例如“/”。其他挂载点将被跳过。
- name: Show only / Mount info
debug:
msg: "{{ item.mount }} - {{ item.device }}"
when: item.mount == '/'
loop: "{{ ansible_facts.mounts }}"
试一下
更新:如果您想稍后检查并执行操作,请使用变量和 set_fact
- name: Check and set fact if / mount point exists
set_fact:
usr_mount_exist: true
when: item.mount == '/'
loop: "{{ ansible_facts.mounts }}"
- name: Show if / exists
debug:
msg: "/ mount point exists"
when: usr_mount_exist == true