Назад | Перейти на главную страницу

Чтение определенного ключевого значения из доступных фактов

Я пытался вытащить значение переменной из доступного факта (ansible_mount), как показано ниже. У меня на целевой машине много маунтов. Я хочу получить только значение ключа устройства, где mount равно /. то есть я хочу получить значение устройства для точки монтирования. Как я могу это получить? Я много пробовал, насколько мне известно, но не работал.

Еще одна вещь, которую я хочу подтвердить, это то, как я могу проверить, удерживает ли какое-либо значение ключа монтирования / usr из фактов ansible_mount. Это нужно для того, чтобы увидеть, смонтирован ли / 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"
            }, 

Вы можете попробовать использовать loop и when condition.

Чтобы показать все точки монтирования (вы также можете использовать его для любого другого действия)

- 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